Commit 59d92f6b authored by Jason Song's avatar Jason Song Committed by Jason Song

polish translations and fix some bugs introduced

parent aee511ba
...@@ -45,6 +45,7 @@ public class WebMvcConfig implements WebMvcConfigurer, WebServerFactoryCustomize ...@@ -45,6 +45,7 @@ public class WebMvcConfig implements WebMvcConfigurer, WebServerFactoryCustomize
addCacheControl(registry, "scripts", 86400); addCacheControl(registry, "scripts", 86400);
addCacheControl(registry, "styles", 86400); addCacheControl(registry, "styles", 86400);
addCacheControl(registry, "views", 86400); addCacheControl(registry, "views", 86400);
addCacheControl(registry, "i18n", 86400);
} }
private void addCacheControl(ResourceHandlerRegistry registry, String folder, int cachePeriod) { private void addCacheControl(ResourceHandlerRegistry registry, String folder, int cachePeriod) {
......
...@@ -11,7 +11,7 @@ public class AppDTO extends BaseDTO{ ...@@ -11,7 +11,7 @@ public class AppDTO extends BaseDTO{
@Pattern( @Pattern(
regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR, regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR,
message = "AppId格式错误: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE message = "Invalid AppId format: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE
) )
private String appId; private String appId;
......
...@@ -11,7 +11,7 @@ public class ClusterDTO extends BaseDTO{ ...@@ -11,7 +11,7 @@ public class ClusterDTO extends BaseDTO{
@NotBlank(message = "cluster name cannot be blank") @NotBlank(message = "cluster name cannot be blank")
@Pattern( @Pattern(
regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR, regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR,
message = "Cluster格式错误: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE message = "Invalid Cluster format: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE
) )
private String name; private String name;
......
...@@ -12,7 +12,7 @@ public class NamespaceDTO extends BaseDTO{ ...@@ -12,7 +12,7 @@ public class NamespaceDTO extends BaseDTO{
@Pattern( @Pattern(
regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR, regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR,
message = "Namespace格式错误: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE message = "Invalid Namespace format: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE
) )
private String namespaceName; private String namespaceName;
......
...@@ -22,7 +22,7 @@ public class AppNamespace extends BaseEntity { ...@@ -22,7 +22,7 @@ public class AppNamespace extends BaseEntity {
@NotBlank(message = "AppNamespace Name cannot be blank") @NotBlank(message = "AppNamespace Name cannot be blank")
@Pattern( @Pattern(
regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR, regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR,
message = "Namespace格式错误: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE message = "Invalid Namespace format: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE
) )
@Column(name = "Name", nullable = false) @Column(name = "Name", nullable = false)
private String name; private String name;
......
...@@ -8,8 +8,8 @@ import java.util.regex.Pattern; ...@@ -8,8 +8,8 @@ import java.util.regex.Pattern;
* @author Jason Song(song_s@ctrip.com) * @author Jason Song(song_s@ctrip.com)
*/ */
public class InputValidator { public class InputValidator {
public static final String INVALID_CLUSTER_NAMESPACE_MESSAGE = "只允许输入数字,字母和符号 - _ ."; public static final String INVALID_CLUSTER_NAMESPACE_MESSAGE = "Only digits, alphabets and symbol - _ . are allowed";
public static final String INVALID_NAMESPACE_NAMESPACE_MESSAGE = "不允许以.json, .yml, .yaml, .xml, .properties结尾"; public static final String INVALID_NAMESPACE_NAMESPACE_MESSAGE = "not allowed to end with .json, .yml, .yaml, .xml, .properties";
public static final String CLUSTER_NAMESPACE_VALIDATOR = "[0-9a-zA-Z_.-]+"; public static final String CLUSTER_NAMESPACE_VALIDATOR = "[0-9a-zA-Z_.-]+";
private static final String APP_NAMESPACE_VALIDATOR = "[a-zA-Z0-9._-]+(?<!\\.(json|yml|yaml|xml|properties))$"; private static final String APP_NAMESPACE_VALIDATOR = "[a-zA-Z0-9._-]+(?<!\\.(json|yml|yaml|xml|properties))$";
private static final Pattern CLUSTER_NAMESPACE_PATTERN = Pattern.compile(CLUSTER_NAMESPACE_VALIDATOR); private static final Pattern CLUSTER_NAMESPACE_PATTERN = Pattern.compile(CLUSTER_NAMESPACE_VALIDATOR);
......
...@@ -59,7 +59,7 @@ public class ClusterController { ...@@ -59,7 +59,7 @@ public class ClusterController {
if (!InputValidator.isValidClusterNamespace(clusterName)) { if (!InputValidator.isValidClusterNamespace(clusterName)) {
throw new BadRequestException( throw new BadRequestException(
String.format("Cluster Name 格式错误: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE)); String.format("Invalid ClusterName format: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE));
} }
if (userService.findByUserId(operator) == null) { if (userService.findByUserId(operator) == null) {
......
...@@ -68,7 +68,7 @@ public class NamespaceController { ...@@ -68,7 +68,7 @@ public class NamespaceController {
appNamespaceDTO.getFormat(), appNamespaceDTO.getDataChangeCreatedBy()); appNamespaceDTO.getFormat(), appNamespaceDTO.getDataChangeCreatedBy());
if (!InputValidator.isValidAppNamespace(appNamespaceDTO.getName())) { if (!InputValidator.isValidAppNamespace(appNamespaceDTO.getName())) {
throw new BadRequestException(String.format("Namespace格式错误: %s", throw new BadRequestException(String.format("Invalid Namespace format: %s",
InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & "
+ InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE)); + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE));
} }
......
...@@ -193,7 +193,7 @@ public class NamespaceController { ...@@ -193,7 +193,7 @@ public class NamespaceController {
@RequestParam(defaultValue = "true") boolean appendNamespacePrefix, @RequestParam(defaultValue = "true") boolean appendNamespacePrefix,
@Valid @RequestBody AppNamespace appNamespace) { @Valid @RequestBody AppNamespace appNamespace) {
if (!InputValidator.isValidAppNamespace(appNamespace.getName())) { if (!InputValidator.isValidAppNamespace(appNamespace.getName())) {
throw new BadRequestException(String.format("Namespace格式错误: %s", throw new BadRequestException(String.format("Invalid Namespace format: %s",
InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE)); InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE));
} }
......
...@@ -154,7 +154,7 @@ public class PermissionController { ...@@ -154,7 +154,7 @@ public class PermissionController {
Set<String> assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType, env), Set<String> assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType, env),
Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); Sets.newHashSet(user), userInfoHolder.getUser().getUserId());
if (CollectionUtils.isEmpty(assignedUser)) { if (CollectionUtils.isEmpty(assignedUser)) {
throw new BadRequestException(user + "已授权"); throw new BadRequestException(user + " already authorized");
} }
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
...@@ -209,7 +209,7 @@ public class PermissionController { ...@@ -209,7 +209,7 @@ public class PermissionController {
Set<String> assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType), Set<String> assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType),
Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); Sets.newHashSet(user), userInfoHolder.getUser().getUserId());
if (CollectionUtils.isEmpty(assignedUser)) { if (CollectionUtils.isEmpty(assignedUser)) {
throw new BadRequestException(user + "已授权"); throw new BadRequestException(user + " already authorized");
} }
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
...@@ -253,7 +253,7 @@ public class PermissionController { ...@@ -253,7 +253,7 @@ public class PermissionController {
Set<String> assignedUsers = rolePermissionService.assignRoleToUsers(RoleUtils.buildAppRoleName(appId, roleType), Set<String> assignedUsers = rolePermissionService.assignRoleToUsers(RoleUtils.buildAppRoleName(appId, roleType),
Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); Sets.newHashSet(user), userInfoHolder.getUser().getUserId());
if (CollectionUtils.isEmpty(assignedUsers)) { if (CollectionUtils.isEmpty(assignedUsers)) {
throw new BadRequestException(user + "已授权"); throw new BadRequestException(user + " already authorized");
} }
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
......
...@@ -14,7 +14,7 @@ public class AppModel { ...@@ -14,7 +14,7 @@ public class AppModel {
@NotBlank(message = "appId cannot be blank") @NotBlank(message = "appId cannot be blank")
@Pattern( @Pattern(
regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR, regexp = InputValidator.CLUSTER_NAMESPACE_VALIDATOR,
message = "AppId格式错误: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE message = "Invalid AppId format: " + InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE
) )
private String appId; private String appId;
......
...@@ -12,11 +12,11 @@ public class RelativeDateFormat { ...@@ -12,11 +12,11 @@ public class RelativeDateFormat {
private static final long ONE_HOUR = 3600000L; private static final long ONE_HOUR = 3600000L;
private static final long ONE_DAY = 86400000L; private static final long ONE_DAY = 86400000L;
private static final String ONE_SECOND_AGO = "秒前"; private static final String ONE_SECOND_AGO = " seconds ago";
private static final String ONE_MINUTE_AGO = "分钟前"; private static final String ONE_MINUTE_AGO = " minutes ago";
private static final String ONE_HOUR_AGO = "小时前"; private static final String ONE_HOUR_AGO = " hours ago";
private static final String ONE_DAY_AGO = "天前"; private static final String ONE_DAY_AGO = " days ago";
private static final String ONE_MONTH_AGO = "月前"; private static final String ONE_MONTH_AGO = " months ago";
public static String format(Date date) { public static String format(Date date) {
if (date.after(new Date())) { if (date.after(new Date())) {
...@@ -39,11 +39,11 @@ public class RelativeDateFormat { ...@@ -39,11 +39,11 @@ public class RelativeDateFormat {
Date lastDayBeginTime = getDateOffset(-1); Date lastDayBeginTime = getDateOffset(-1);
if (date.after(lastDayBeginTime)) { if (date.after(lastDayBeginTime)) {
return "昨天"; return "yesterday";
} }
Date lastTwoDaysBeginTime = getDateOffset(-2); Date lastTwoDaysBeginTime = getDateOffset(-2);
if (date.after(lastTwoDaysBeginTime)) { if (date.after(lastTwoDaysBeginTime)) {
return "前天"; return "the day before yesterday";
} }
if (delta < 30L * ONE_DAY) { if (delta < 30L * ONE_DAY) {
long days = toDays(delta); long days = toDays(delta);
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label"> <label class="col-sm-3 control-label">
<apollorequiredfield></apollorequiredfield> <apollorequiredfield></apollorequiredfield>
{{'Common.AppOwner' | translate }}</label> {{'Common.AppOwnerLong' | translate }}</label>
<div class="col-sm-6 J_ownerSelectorPanel"> <div class="col-sm-6 J_ownerSelectorPanel">
<apollouserselector apollo-id="'ownerSelector'" disabled="isOpenManageAppMasterRoleLimit"></apollouserselector> <apollouserselector apollo-id="'ownerSelector'" disabled="isOpenManageAppMasterRoleLimit"></apollouserselector>
<small style="color: maroon" ng-if="isOpenManageAppMasterRoleLimit">{{'App.AppOwnerTips' | translate }}</small> <small style="color: maroon" ng-if="isOpenManageAppMasterRoleLimit">{{'App.AppOwnerTips' | translate }}</small>
......
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
<section class="context" ng-show="!hasAssignUserPermission"> <section class="context" ng-show="!hasAssignUserPermission">
<div class="panel-body text-center"> <div class="panel-body text-center">
<h4 translate="App.Setting.NoPermissonTips" translate-value-users="{{admins.join(',')}}"></h4> <h4 translate="App.Setting.NoPermissionTips" translate-value-users="{{admins.join(',')}}"></h4>
</div> </div>
</section> </section>
</div> </div>
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
{{'Common.ClusterName' | translate }}</label> {{'Common.ClusterName' | translate }}</label>
<div class="col-sm-6"> <div class="col-sm-6">
<input type="text" class="form-control" name="clusterName" ng-model="clusterName"> <input type="text" class="form-control" name="clusterName" ng-model="clusterName">
<small>{{'Cluster.CreaterNameTips' | translate }}</small> <small>{{'Cluster.CreateNameTips' | translate }}</small>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
......
...@@ -181,7 +181,7 @@ ...@@ -181,7 +181,7 @@
<!--default cluster tip --> <!--default cluster tip -->
<div ng-show="pageContext.clusterName == 'default'"> <div ng-show="pageContext.clusterName == 'default'">
<strong>{{'Config.Note' | translate }}:</strong> <strong>{{'Config.Note' | translate }}:</strong>
<span translate="Config.ClusterIsDefualtTipContent" <span translate="Config.ClusterIsDefaultTipContent"
translate-value-name="{{envMapClusters[pageContext.env]}}"></span> translate-value-name="{{envMapClusters[pageContext.env]}}"></span>
</div> </div>
......
...@@ -25,10 +25,10 @@ ...@@ -25,10 +25,10 @@
<div class="operation-caption release-operation-normal text-center" style="left:0;"> <div class="operation-caption release-operation-normal text-center" style="left:0;">
<small>{{'Config.History.MasterVersionPublish' | translate }}</small> <small>{{'Config.History.MasterVersionPublish' | translate }}</small>
</div> </div>
<div class="operation-caption release-operation-rollback text-center" style="left: 80px;"> <div class="operation-caption release-operation-rollback text-center" style="left: 110px;">
<small>{{'Config.History.MasterVersionRollback' | translate }}</small> <small>{{'Config.History.MasterVersionRollback' | translate }}</small>
</div> </div>
<div class="operation-caption release-operation-gray text-center" style="left: 160px;"> <div class="operation-caption release-operation-gray text-center" style="left: 220px;">
<small>{{'Config.History.GrayscaleOperator' | translate }}</small> <small>{{'Config.History.GrayscaleOperator' | translate }}</small>
</div> </div>
</div> </div>
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
<div class="load-more media panel-heading text-center hover" ng-show="!hasLoadAll" <div class="load-more media panel-heading text-center hover" ng-show="!hasLoadAll"
ng-click="findReleaseHistory()"> ng-click="findReleaseHistory()">
{{'Config.History.LoadingMore' | translate }} {{'Config.History.LoadMore' | translate }}
</div> </div>
</div> </div>
...@@ -114,12 +114,12 @@ ...@@ -114,12 +114,12 @@
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-default btn-sm" <button type="button" class="btn btn-default btn-sm"
ng-class="{'active':history.viewType == 'diff'}" data-tooltip="tooltip" ng-class="{'active':history.viewType == 'diff'}" data-tooltip="tooltip"
data-placement="bottom" title="查看此次发布与上次版本的变更" data-placement="bottom" title="{{'Config.History.ChangedItemTips' | translate }}"
ng-click="switchConfigViewType(history, 'diff')">{{'Config.History.ChangedItem' | translate }} ng-click="switchConfigViewType(history, 'diff')">{{'Config.History.ChangedItem' | translate }}
</button> </button>
<button type="button" class="btn btn-default btn-sm" <button type="button" class="btn btn-default btn-sm"
ng-class="{'active':history.viewType == 'all'}" data-tooltip="tooltip" ng-class="{'active':history.viewType == 'all'}" data-tooltip="tooltip"
data-placement="bottom" title="查看此次发布的所有配置信息" data-placement="bottom" title="{{'Config.History.AllItemTips' | translate }}"
ng-click="switchConfigViewType(history, 'all')">{{'Config.History.AllItem' | translate }} ng-click="switchConfigViewType(history, 'all')">{{'Config.History.AllItem' | translate }}
</button> </button>
</div> </div>
...@@ -249,7 +249,7 @@ ...@@ -249,7 +249,7 @@
<div class="panel-body" ng-show="isConfigHidden || !releaseHistories || releaseHistories.length == 0"> <div class="panel-body" ng-show="isConfigHidden || !releaseHistories || releaseHistories.length == 0">
<h4 class="text-center empty-container" ng-show="isConfigHidden"> <h4 class="text-center empty-container" ng-show="isConfigHidden">
{{'Config.History.NoPermissonTips' | translate }}</h4> {{'Config.History.NoPermissionTips' | translate }}</h4>
<h4 class="text-center empty-container" ng-show="!isConfigHidden"> <h4 class="text-center empty-container" ng-show="!isConfigHidden">
{{'Config.History.NoPublishHistory' | translate }}</h4> {{'Config.History.NoPublishHistory' | translate }}</h4>
</div> </div>
......
...@@ -3,105 +3,106 @@ ...@@ -3,105 +3,106 @@
"Common.Ctrip": "Ctrip", "Common.Ctrip": "Ctrip",
"Common.CtripDepartment": "Framework R&D Department", "Common.CtripDepartment": "Framework R&D Department",
"Common.Nav.ShowNavBar": "Display navigation bar", "Common.Nav.ShowNavBar": "Display navigation bar",
"Common.Nav.HideNavBar": "Hidden navigation bar", "Common.Nav.HideNavBar": "Hide navigation bar",
"Common.Nav.Help": "Help", "Common.Nav.Help": "Help",
"Common.Nav.AdminTools": "Admin Tools", "Common.Nav.AdminTools": "Admin Tools",
"Common.Nav.UserManage": "User Management", "Common.Nav.UserManage": "User Management",
"Common.Nav.SystemRoleManage": "System Permission Management", "Common.Nav.SystemRoleManage": "System Permission Management",
"Common.Nav.OpenMange": "Open Platform Authorized Management", "Common.Nav.OpenMange": "Open Platform Authorization Management",
"Common.Nav.SystemConfig": "System Parameter", "Common.Nav.SystemConfig": "System Configuration",
"Common.Nav.DeleteApp-Cluster-Namespace": "Delete Apps, Clusters, AppNamespace", "Common.Nav.DeleteApp-Cluster-Namespace": "Delete Apps, Clusters, AppNamespace",
"Common.Nav.SystemInfo": "System Information", "Common.Nav.SystemInfo": "System Information",
"Common.Nav.Logout": "Exit", "Common.Nav.Logout": "Logout",
"Common.Department": "Department", "Common.Department": "Department",
"Common.Cluster": "Cluster", "Common.Cluster": "Cluster",
"Common.Environment": "Environment", "Common.Environment": "Environment",
"Common.Email": "Mail", "Common.Email": "Email",
"Common.AppId": "AppId", "Common.AppId": "App Id",
"Common.Namespace": "Namespace", "Common.Namespace": "Namespace",
"Common.AppName": "AppName", "Common.AppName": "App Name",
"Common.AppOwner": "App Leader", "Common.AppOwner": "App Owner",
"Common.AppAdmin": "App Owner", "Common.AppOwnerLong": "App Owner",
"Common.AppAdmin": "App Administrators",
"Common.ClusterName": "Cluster Name", "Common.ClusterName": "Cluster Name",
"Common.Submit": "Submit", "Common.Submit": "Submit",
"Common.Save": "Save", "Common.Save": "Save",
"Common.Created": "Created", "Common.Created": "Create Successfully",
"Common.CreateFailed": "Create failed", "Common.CreateFailed": "Fail to Create",
"Common.Deleted": "Deleted", "Common.Deleted": "Delete Successfully",
"Common.DeleteFailed": "Delete failed", "Common.DeleteFailed": "Fail to Delete",
"Common.ReturnToIndex": "Return", "Common.ReturnToIndex": "Return to project page",
"Common.Cancel": "Cancel", "Common.Cancel": "Cancel",
"Common.Ok": "OK", "Common.Ok": "OK",
"Common.Search": "Query", "Common.Search": "Query",
"Common.IsRootUser": "The current page is only available for Apollo administrator.", "Common.IsRootUser": "Current page is only accessible to Apollo administrator.",
"Common.PelaseChooseDepartment": "Please select department.", "Common.PleaseChooseDepartment": "Please select department",
"Common.PelaseChooseOwner": "Please select App leader.", "Common.PleaseChooseOwner": "Please select app owner",
"Common.LoginExprieTips": "Your login has expired. Please refresh the page and try again.", "Common.LoginExpiredTips": "Your login is expired. Please refresh the page and try again.",
"Component.DeleteNamespace.Title": "Delete Namespace", "Component.DeleteNamespace.Title": "Delete Namespace",
"Component.DeleteNamespace.PublicContent": "Deleting Namespace will cause the instance can't get the configuration of this Namespace. Are you sure you want to delete it?", "Component.DeleteNamespace.PublicContent": "Deleting namespace will cause the instances unable to get the configuration of this namespace. Are you sure to delete it?",
"Component.DeleteNamespace.PrivateContent": "Deleting a private Namespace will cause the instance can’t get the configuration of this Namespace, and the page will prompt the missing Namespace (unless the AppNamespace is deleted by Admin tool). Are you sure you want to delete it?", "Component.DeleteNamespace.PrivateContent": "Deleting a private Namespace will cause the instances unable to get the configuration of this namespace, and the page will prompt 'missing namespace' (unless the AppNamespace is deleted by admin tool). Are you sure to delete it?",
"Component.GrayscalePublishRule.Title": "Edit Grayscale Rule", "Component.GrayscalePublishRule.Title": "Edit Grayscale Rule",
"Component.GrayscalePublishRule.AppId": "Grayscale AppId", "Component.GrayscalePublishRule.AppId": "Grayscale AppId",
"Component.GrayscalePublishRule.AcceptRule": "Grayscale Application Rule", "Component.GrayscalePublishRule.AcceptRule": "Grayscale Application Rule",
"Component.GrayscalePublishRule.AcceptPartInstance": "Applied to some instances", "Component.GrayscalePublishRule.AcceptPartInstance": "Apply to some instances",
"Component.GrayscalePublishRule.AcceptAllInstance": "Applied to all instances", "Component.GrayscalePublishRule.AcceptAllInstance": "Apply to all instances",
"Component.GrayscalePublishRule.IP": "Grayscale IP", "Component.GrayscalePublishRule.IP": "Grayscale IP",
"Component.GrayscalePublishRule.AppIdFilterTips": "(The list of instances is filtered by the typed AppId automatically)", "Component.GrayscalePublishRule.AppIdFilterTips": "(The list of instances are filtered by the typed AppId automatically)",
"Component.GrayscalePublishRule.IpTips": "Can't find the IP you wanted? OK", "Component.GrayscalePublishRule.IpTips": "Can't find the IP you want? You may ",
"Component.GrayscalePublishRule.EnterIp": "Enter IP manually", "Component.GrayscalePublishRule.EnterIp": "enter IP manually",
"Component.GrayscalePublishRule.EnterIpTips": "Enter the list of IP, use ',' to separate the IP, and then click the Add button.", "Component.GrayscalePublishRule.EnterIpTips": "Enter the list of IP, using ',' as the separator, and then click the Add button.",
"Component.GrayscalePublishRule.Add": "Add", "Component.GrayscalePublishRule.Add": "Add",
"Component.ConfigItem.Title": "Add Configuration", "Component.ConfigItem.Title": "Add Configuration",
"Component.ConfigItem.TitleTips": "(Kindly reminder: Configuration can be added in batches through text mode)", "Component.ConfigItem.TitleTips": "(Reminder: Configuration can be added in batch via text mode)",
"Component.ConfigItem.AddGrayscaleItem": "Add Grayscale Configuration", "Component.ConfigItem.AddGrayscaleItem": "Add Grayscale Configuration",
"Component.ConfigItem.ModifyItem": "Modify Configuration", "Component.ConfigItem.ModifyItem": "Modify Configuration",
"Component.ConfigItem.ItemKey": "Key", "Component.ConfigItem.ItemKey": "Key",
"Component.ConfigItem.ItemValue": "Value", "Component.ConfigItem.ItemValue": "Value",
"Component.ConfigItem.ItemValueTips": "Note: Hidden characters (Spaces, Newline, Tab) easily cause configuration errors. If you need to check hidden characters in Value, Click here", "Component.ConfigItem.ItemValueTips": "Note: Hidden characters (Spaces, Newline, Tab) easily cause configuration errors. If you want to check hidden characters in Value, please click",
"Component.ConfigItem.ItemValueShowDetection": "Check Hidden Characters", "Component.ConfigItem.ItemValueShowDetection": "Check Hidden Characters",
"Component.ConfigItem.ItemValueNotHiddenChars": "No Hidden Characters", "Component.ConfigItem.ItemValueNotHiddenChars": "No Hidden Characters",
"Component.ConfigItem.ItemComment": "Comment", "Component.ConfigItem.ItemComment": "Comment",
"Component.ConfigItem.ChooseCluster": "Select Cluster", "Component.ConfigItem.ChooseCluster": "Select Cluster",
"Component.MergePublish.Title": "Full Release", "Component.MergePublish.Title": "Full Release",
"Component.MergePublish.Tips": "Full release will merge the configuration of grayscale version into the main branch and release it.", "Component.MergePublish.Tips": "Full release will merge the configurations of grayscale version into the main version and release them.",
"Component.MergePublish.NextStep": "After full release, you hope", "Component.MergePublish.NextStep": "After full release, choose which behavior you want",
"Component.MergePublish.DeleteGrayscale": "Delete Grayscale Version", "Component.MergePublish.DeleteGrayscale": "Delete grayscale version",
"Component.MergePublish.ReservedGrayscale": "Keep Grayscale Version", "Component.MergePublish.ReservedGrayscale": "Keep grayscale version",
"Component.Namespace.Branch.IsChanged": "Modified", "Component.Namespace.Branch.IsChanged": "Modified",
"Component.Namespace.Branch.ChangeUser": "Current Modifier", "Component.Namespace.Branch.ChangeUser": "Current Modifier",
"Component.Namespace.Branch.ContinueGrayscalePublish": "Continue to Release Grayscale", "Component.Namespace.Branch.ContinueGrayscalePublish": "Continue to Grayscale Release",
"Component.Namespace.Branch.GrayscalePublish": "Grayscale Release", "Component.Namespace.Branch.GrayscalePublish": "Grayscale Release",
"Component.Namespace.Branch.MergeToMasterAndPublish": "Merge to the main version and release the main version configuration", "Component.Namespace.Branch.MergeToMasterAndPublish": "Merge to the main version and release the main version's configurations ",
"Component.Namespace.Branch.AllPublish": "Full Release", "Component.Namespace.Branch.AllPublish": "Full Release",
"Component.Namespace.Branch.DiscardGrayscaleVesion": "Drop Grayscale Version", "Component.Namespace.Branch.DiscardGrayscaleVesion": "Abandon Grayscale Version",
"Component.Namespace.Branch.DiscardGrayscale": "Drop Grayscale", "Component.Namespace.Branch.DiscardGrayscale": "Abandon Grayscale",
"Component.Namespace.Branch.NoPermissionTips": "You are not the administrator of the project, and you do not have editing or releasing right for the Namespace. You cannot check the configuration.", "Component.Namespace.Branch.NoPermissionTips": "You are not this project's administrator, nor you have edit or release permission for the namespace. Thus you cannot view the configuration.",
"Component.Namespace.Branch.Tab.Configuration": "Configuration", "Component.Namespace.Branch.Tab.Configuration": "Configuration",
"Component.Namespace.Branch.Tab.GrayscaleRule": "Grayscale Rule", "Component.Namespace.Branch.Tab.GrayscaleRule": "Grayscale Rule",
"Component.Namespace.Branch.Tab.GrayscaleInstance": "Grayscale Instance List", "Component.Namespace.Branch.Tab.GrayscaleInstance": "Grayscale Instance List",
"Component.Namespace.Branch.Tab.ChangeHistory": "Modify History", "Component.Namespace.Branch.Tab.ChangeHistory": "Change History",
"Component.Namespace.Branch.Body.Item": "Grayscale Configuration", "Component.Namespace.Branch.Body.Item": "Grayscale Configuration",
"Component.Namespace.Branch.Body.AddedItem": "New Grayscale Configuration", "Component.Namespace.Branch.Body.AddedItem": "Add Grayscale Configuration",
"Component.Namespace.Branch.Body.PublishState": "Release Status", "Component.Namespace.Branch.Body.PublishState": "Release Status",
"Component.Namespace.Branch.Body.ItemSort": "Sort", "Component.Namespace.Branch.Body.ItemSort": "Sort",
"Component.Namespace.Branch.Body.ItemKey": "Key", "Component.Namespace.Branch.Body.ItemKey": "Key",
"Component.Namespace.Branch.Body.ItemMasterValue": "Value of Main Version", "Component.Namespace.Branch.Body.ItemMasterValue": "Value of Main Version",
"Component.Namespace.Branch.Body.ItemGrayscaleValue": "Grayscale value", "Component.Namespace.Branch.Body.ItemGrayscaleValue": "Grayscale value",
"Component.Namespace.Branch.Body.ItemComment": "Comments", "Component.Namespace.Branch.Body.ItemComment": "Comment",
"Component.Namespace.Branch.Body.ItemLastModify": "Final Modifier", "Component.Namespace.Branch.Body.ItemLastModify": "Last Modifier",
"Component.Namespace.Branch.Body.ItemLastModifyTime": "Final Modified Time", "Component.Namespace.Branch.Body.ItemLastModifyTime": "Last Modified Time",
"Component.Namespace.Branch.Body.ItemOperator": "Operation", "Component.Namespace.Branch.Body.ItemOperator": "Operation",
"Component.Namespace.Branch.Body.ClickToSeeItemValue": "Click to check released values", "Component.Namespace.Branch.Body.ClickToSeeItemValue": "Click to view released values",
"Component.Namespace.Branch.Body.ItemNoPublish": "Unreleased", "Component.Namespace.Branch.Body.ItemNoPublish": "Unreleased",
"Component.Namespace.Branch.Body.ItemPublished": "Released", "Component.Namespace.Branch.Body.ItemPublished": "Released",
"Component.Namespace.Branch.Body.ItemEffective": "Effective Configuration", "Component.Namespace.Branch.Body.ItemEffective": "Effective configuration",
"Component.Namespace.Branch.Body.ClickToSee": "Click to View", "Component.Namespace.Branch.Body.ClickToSee": "Click to view",
"Component.Namespace.Branch.Body.DeletedItem": "Deleted Configuration", "Component.Namespace.Branch.Body.DeletedItem": "Deleted configuration",
"Component.Namespace.Branch.Body.Delete": "Delete", "Component.Namespace.Branch.Body.Delete": "Deleted",
"Component.Namespace.Branch.Body.ChangedFormMaster": "Modify the configuration of the main version", "Component.Namespace.Branch.Body.ChangedFromMaster": "Configuration modified from the main version",
"Component.Namespace.Branch.Body.ModifedItem": "Modified Configuration", "Component.Namespace.Branch.Body.ModifiedItem": "Modified configuration",
"Component.Namespace.Branch.Body.Modify": "Modify", "Component.Namespace.Branch.Body.Modify": "Modified",
"Component.Namespace.Branch.Body.AddedByGrayscale": "Specific Configuration for Grayscale Version", "Component.Namespace.Branch.Body.AddedByGrayscale": "Specific configuration for grayscale version",
"Component.Namespace.Branch.Body.Added": "New", "Component.Namespace.Branch.Body.Added": "New",
"Component.Namespace.Branch.Body.Op.Modify": "Modify", "Component.Namespace.Branch.Body.Op.Modify": "Modify",
"Component.Namespace.Branch.Body.Op.Delete": "Delete", "Component.Namespace.Branch.Body.Op.Delete": "Delete",
...@@ -109,32 +110,32 @@ ...@@ -109,32 +110,32 @@
"Component.Namespace.MasterBranch.Body.PublishState": "Release Status", "Component.Namespace.MasterBranch.Body.PublishState": "Release Status",
"Component.Namespace.MasterBranch.Body.ItemKey": "Key", "Component.Namespace.MasterBranch.Body.ItemKey": "Key",
"Component.Namespace.MasterBranch.Body.ItemValue": "Value", "Component.Namespace.MasterBranch.Body.ItemValue": "Value",
"Component.Namespace.MasterBranch.Body.ItemComment": "Comments", "Component.Namespace.MasterBranch.Body.ItemComment": "Comment",
"Component.Namespace.MasterBranch.Body.ItemLastModify": "Final Modifier", "Component.Namespace.MasterBranch.Body.ItemLastModify": "Last Modifier",
"Component.Namespace.MasterBranch.Body.ItemLastModifyTime": "Final Modified Time", "Component.Namespace.MasterBranch.Body.ItemLastModifyTime": "Last Modified Time",
"Component.Namespace.MasterBranch.Body.ItemOperator": "Operation", "Component.Namespace.MasterBranch.Body.ItemOperator": "Operation",
"Component.Namespace.MasterBranch.Body.ClickToSeeItemValue": "Click to check released values", "Component.Namespace.MasterBranch.Body.ClickToSeeItemValue": "Click to check released values",
"Component.Namespace.MasterBranch.Body.ItemNoPublish": "Unreleased", "Component.Namespace.MasterBranch.Body.ItemNoPublish": "Unreleased",
"Component.Namespace.MasterBranch.Body.ItemEffective": "Effective Configuration", "Component.Namespace.MasterBranch.Body.ItemEffective": "Effective configuration",
"Component.Namespace.MasterBranch.Body.ItemPublished": "Released", "Component.Namespace.MasterBranch.Body.ItemPublished": "Released",
"Component.Namespace.MasterBranch.Body.AddedItem": "New Configuration", "Component.Namespace.MasterBranch.Body.AddedItem": "New configuration",
"Component.Namespace.MasterBranch.Body.ModifyItem": "Modify the Grayscale Configuration", "Component.Namespace.MasterBranch.Body.ModifyItem": "Modify the grayscale configuration",
"Component.Namespace.Branch.GrayScaleRule.NoPermissonTips": "You do not have the right to edit grayscale rule. Only those who have the right to modify or release namespace can edit grayscale rule. If you need to edit grayscale rule, please contact the project administrator to apply for the permission.", "Component.Namespace.Branch.GrayScaleRule.NoPermissionTips": "You do not have the permission to edit grayscale rule. Only those who have the permission to edit or release the namespace can edit grayscale rule. If you need to edit grayscale rule, please contact the project administrator to apply for the permission.",
"Component.Namespace.Branch.GrayScaleRule.AppId": "Grayscale AppId", "Component.Namespace.Branch.GrayScaleRule.AppId": "Grayscale AppId",
"Component.Namespace.Branch.GrayScaleRule.IpList": "Grayscale IP List", "Component.Namespace.Branch.GrayScaleRule.IpList": "Grayscale IP List",
"Component.Namespace.Branch.GrayScaleRule.Operator": "Operation", "Component.Namespace.Branch.GrayScaleRule.Operator": "Operation",
"Component.Namespace.Branch.GrayScaleRule.ApplyToAllInstances": "ALL", "Component.Namespace.Branch.GrayScaleRule.ApplyToAllInstances": "ALL",
"Component.Namespace.Branch.GrayScaleRule.Modify": "Modify", "Component.Namespace.Branch.GrayScaleRule.Modify": "Modify",
"Component.Namespace.Branch.GrayScaleRule.Delete": "Delete", "Component.Namespace.Branch.GrayScaleRule.Delete": "Delete",
"Component.Namespace.Branch.GrayScaleRule.AddNewRule": "New Rules", "Component.Namespace.Branch.GrayScaleRule.AddNewRule": "Create Rule",
"Component.Namespace.Branch.Instance.RefreshList": "Refresh List", "Component.Namespace.Branch.Instance.RefreshList": "Refresh List",
"Component.Namespace.Branch.Instance.ItemToSee": "View Configuration", "Component.Namespace.Branch.Instance.ItemToSee": "View configuration",
"Component.Namespace.Branch.Instance.InstanceAppId": "App ID", "Component.Namespace.Branch.Instance.InstanceAppId": "App ID",
"Component.Namespace.Branch.Instance.InstanceClusterName": "Cluster Name", "Component.Namespace.Branch.Instance.InstanceClusterName": "Cluster Name",
"Component.Namespace.Branch.Instance.InstanceDataCenter": "Data Center", "Component.Namespace.Branch.Instance.InstanceDataCenter": "Data Center",
"Component.Namespace.Branch.Instance.InstanceIp": "IP", "Component.Namespace.Branch.Instance.InstanceIp": "IP",
"Component.Namespace.Branch.Instance.InstanceGetItemTime": "Configure Getting Time", "Component.Namespace.Branch.Instance.InstanceGetItemTime": "Configuration Fetched Time",
"Component.Namespace.Branch.Instance.LoadingMore": "Refresh List", "Component.Namespace.Branch.Instance.LoadMore": "Refresh list",
"Component.Namespace.Branch.Instance.NoInstance": "No instance information", "Component.Namespace.Branch.Instance.NoInstance": "No instance information",
"Component.Namespace.Branch.History.ItemType": "Type", "Component.Namespace.Branch.History.ItemType": "Type",
"Component.Namespace.Branch.History.ItemKey": "Key", "Component.Namespace.Branch.History.ItemKey": "Key",
...@@ -142,88 +143,88 @@ ...@@ -142,88 +143,88 @@
"Component.Namespace.Branch.History.ItemNewValue": "New Value", "Component.Namespace.Branch.History.ItemNewValue": "New Value",
"Component.Namespace.Branch.History.ItemComment": "Comment", "Component.Namespace.Branch.History.ItemComment": "Comment",
"Component.Namespace.Branch.History.NewAdded": "Add", "Component.Namespace.Branch.History.NewAdded": "Add",
"Component.Namespace.Branch.History.Modifed": "Update", "Component.Namespace.Branch.History.Modified": "Update",
"Component.Namespace.Branch.History.Deleted": "Delete", "Component.Namespace.Branch.History.Deleted": "Delete",
"Component.Namespace.Branch.History.LoadingMore": "Loading more", "Component.Namespace.Branch.History.LoadMore": "Load more",
"Component.Namespace.Branch.History.NoHistory": "No Change History", "Component.Namespace.Branch.History.NoHistory": "No Change History",
"Component.Namespace.Header.Title.Private": "Private", "Component.Namespace.Header.Title.Private": "Private",
"Component.Namespace.Header.Title.PrivateTips": "The configuration of private namespace ({{namespace.baseInfo.namespaceName}}) can be only read by clients whose AppId is {{appId}}", "Component.Namespace.Header.Title.PrivateTips": "The configuration of private namespace ({{namespace.baseInfo.namespaceName}}) can be only fetched by clients whose AppId is {{appId}}",
"Component.Namespace.Header.Title.Public": "Public", "Component.Namespace.Header.Title.Public": "Public",
"Component.Namespace.Header.Title.PublicTips": "The configuration of namespace ({{namespace. baseInfo. namespaceName}}) can be read by any client.", "Component.Namespace.Header.Title.PublicTips": "The configuration of namespace ({{namespace.baseInfo.namespaceName}}) can be fetched by any client.",
"Component.Namespace.Header.Title.Extend": "Relation", "Component.Namespace.Header.Title.Extend": "Association",
"Component.Namespace.Header.Title.ExtendTips": "The configuration of namespace ({{namespace.baseInfo.namespaceName}}) will override the configuration of the public namespace, and the combined configuration can only be read by clients whose AppId is {{appId}}.", "Component.Namespace.Header.Title.ExtendTips": "The configuration of namespace ({{namespace.baseInfo.namespaceName}}) will override the configuration of the public namespace, and the combined configuration can only be fetched by clients whose AppId is {{appId}}.",
"Component.Namespace.Header.Title.ExpandAndCollapse": "[Extension/Contraction]", "Component.Namespace.Header.Title.ExpandAndCollapse": "[Expand/Collapse]",
"Component.Namespace.Header.Title.Master": "Main Version", "Component.Namespace.Header.Title.Master": "Main Version",
"Component.Namespace.Header.Title.Grayscale": "Grayscale Version", "Component.Namespace.Header.Title.Grayscale": "Grayscale Version",
"Component.Namespace.Master.LoadNamespace": "Load Namespace", "Component.Namespace.Master.LoadNamespace": "Load Namespace",
"Component.Namespace.Master.LoadNamespaceTips": "Load Namespace", "Component.Namespace.Master.LoadNamespaceTips": "Load Namespace",
"Component.Namespace.Master.Items.Changed": "Modified", "Component.Namespace.Master.Items.Changed": "Modified",
"Component.Namespace.Master.Items.ChangedUser": "Current Modifier", "Component.Namespace.Master.Items.ChangedUser": "Current modifier",
"Component.Namespace.Master.Items.Pubish": "Release", "Component.Namespace.Master.Items.Publish": "Release",
"Component.Namespace.Master.Items.PubishTips": "Release Configuration", "Component.Namespace.Master.Items.PublishTips": "Release configuration",
"Component.Namespace.Master.Items.Rollback": "Rollback", "Component.Namespace.Master.Items.Rollback": "Rollback",
"Component.Namespace.Master.Items.RollbackTips": "Rollback released configuration", "Component.Namespace.Master.Items.RollbackTips": "Rollback released configuration",
"Component.Namespace.Master.Items.PubishHistory": "Release History", "Component.Namespace.Master.Items.PublishHistory": "Release History",
"Component.Namespace.Master.Items.PubishHistoryTips": "View the release history", "Component.Namespace.Master.Items.PublishHistoryTips": "View the release history",
"Component.Namespace.Master.Items.Grant": "Authorize", "Component.Namespace.Master.Items.Grant": "Authorize",
"Component.Namespace.Master.Items.GrantTips": "Configuration Change, Release Authority", "Component.Namespace.Master.Items.GrantTips": "Manage the configuration edit and release permission",
"Component.Namespace.Master.Items.Grayscale": "Grayscale", "Component.Namespace.Master.Items.Grayscale": "Grayscale",
"Component.Namespace.Master.Items.GrayscaleTips": "Create a test version", "Component.Namespace.Master.Items.GrayscaleTips": "Create a test version",
"Component.Namespace.Master.Items.RequestPermission": "Apply for Configuring Authority", "Component.Namespace.Master.Items.RequestPermission": "Apply for configuration permission",
"Component.Namespace.Master.Items.RequestPermissionTips": "You do not have any configuring authority. Please apply.", "Component.Namespace.Master.Items.RequestPermissionTips": "You do not have any configuration permission. Please apply.",
"Component.Namespace.Master.Items.DeleteNamespace": "Delete Namespace", "Component.Namespace.Master.Items.DeleteNamespace": "Delete Namespace",
"Component.Namespace.Master.Items.NoPermissionTips": "You are not the administrator of the project, and you do not have editing or releasing authority for the Namespace. You cannot check the configuration information.", "Component.Namespace.Master.Items.NoPermissionTips": "You are not this project's administrator, nor you have edit or releas permission for the namespace. Thus you cannot view the configuration.",
"Component.Namespace.Master.Items.ItemList": "Table", "Component.Namespace.Master.Items.ItemList": "Table",
"Component.Namespace.Master.Items.ItemListByText": "Text", "Component.Namespace.Master.Items.ItemListByText": "Text",
"Component.Namespace.Master.Items.ItemHistory": "Change History", "Component.Namespace.Master.Items.ItemHistory": "Change History",
"Component.Namespace.Master.Items.ItemInstance": "Instance List", "Component.Namespace.Master.Items.ItemInstance": "Instance List",
"Component.Namespace.Master.Items.CopyText": "Copy Text", "Component.Namespace.Master.Items.CopyText": "Copy",
"Component.Namespace.Master.Items.GrammarCheck": "Grammar Checking", "Component.Namespace.Master.Items.GrammarCheck": "Syntax Check",
"Component.Namespace.Master.Items.CancelChanged": "Cancel the Change", "Component.Namespace.Master.Items.CancelChanged": "Cancel",
"Component.Namespace.Master.Items.Change": "Modify Configuration", "Component.Namespace.Master.Items.Change": "Modify",
"Component.Namespace.Master.Items.SummitChanged": "Submit the Change", "Component.Namespace.Master.Items.SummitChanged": "Submit",
"Component.Namespace.Master.Items.SortByKey": "Filter the configuration by key", "Component.Namespace.Master.Items.SortByKey": "Filter the configurations by key",
"Component.Namespace.Master.Items.FilterItem": "Filter configuration", "Component.Namespace.Master.Items.FilterItem": "Filter",
"Component.Namespace.Master.Items.SyncItemTips": "Synchronize configuration among environments", "Component.Namespace.Master.Items.SyncItemTips": "Synchronize configurations among environments",
"Component.Namespace.Master.Items.SyncItem": "Synchronize Configuration", "Component.Namespace.Master.Items.SyncItem": "Synchronize",
"Component.Namespace.Master.Items.DiffItemTips": "Compare the configuration among environments", "Component.Namespace.Master.Items.DiffItemTips": "Compare the configurations among environments",
"Component.Namespace.Master.Items.DiffItem": "Compare Configuration", "Component.Namespace.Master.Items.DiffItem": "Compare",
"Component.Namespace.Master.Items.AddItem": "Add Configuration", "Component.Namespace.Master.Items.AddItem": "Add Configuration",
"Component.Namespace.Master.Items.Body.ItemsNoPublishedTips": "Tips: This namespace has never been released. Apollo client will not be able to get the configuration and record 404 log information. Please release it in time.", "Component.Namespace.Master.Items.Body.ItemsNoPublishedTips": "Tips: This namespace has never been released. Apollo client will not be able to fetch the configuration and will record 404 log information. Please release it in time.",
"Component.Namespace.Master.Items.Body.FilterByKey": "Input key for filtering", "Component.Namespace.Master.Items.Body.FilterByKey": "Input key to filter",
"Component.Namespace.Master.Items.Body.PublishState": "Release Status", "Component.Namespace.Master.Items.Body.PublishState": "Release Status",
"Component.Namespace.Master.Items.Body.Sort": "Sort", "Component.Namespace.Master.Items.Body.Sort": "Sort",
"Component.Namespace.Master.Items.Body.ItemKey": "Key", "Component.Namespace.Master.Items.Body.ItemKey": "Key",
"Component.Namespace.Master.Items.Body.ItemValue": "Value", "Component.Namespace.Master.Items.Body.ItemValue": "Value",
"Component.Namespace.Master.Items.Body.ItemComment": "Comment", "Component.Namespace.Master.Items.Body.ItemComment": "Comment",
"Component.Namespace.Master.Items.Body.ItemLastModify": "Final Modifier", "Component.Namespace.Master.Items.Body.ItemLastModify": "Last Modifier",
"Component.Namespace.Master.Items.Body.ItemLastModifyTime": "Final Modify Time", "Component.Namespace.Master.Items.Body.ItemLastModifyTime": "Last Modified Time",
"Component.Namespace.Master.Items.Body.ItemOperator": "Operation", "Component.Namespace.Master.Items.Body.ItemOperator": "Operation",
"Component.Namespace.Master.Items.Body.NoPublish": "Unreleased", "Component.Namespace.Master.Items.Body.NoPublish": "Unreleased",
"Component.Namespace.Master.Items.Body.NoPublishTitle": "Click to view released values", "Component.Namespace.Master.Items.Body.NoPublishTitle": "Click to view released values",
"Component.Namespace.Master.Items.Body.NoPublishTips": "New configuration, no released value", "Component.Namespace.Master.Items.Body.NoPublishTips": "New configuration, no released value",
"Component.Namespace.Master.Items.Body.Published": "Released", "Component.Namespace.Master.Items.Body.Published": "Released",
"Component.Namespace.Master.Items.Body.PublishedTitle": "Effective Configuration", "Component.Namespace.Master.Items.Body.PublishedTitle": "Effective configuration",
"Component.Namespace.Master.Items.Body.ClickToSee": "Click to view", "Component.Namespace.Master.Items.Body.ClickToSee": "Click to view",
"Component.Namespace.Master.Items.Body.Grayscale": "Gray", "Component.Namespace.Master.Items.Body.Grayscale": "Gray",
"Component.Namespace.Master.Items.Body.HaveGrayscale": "This configuration has grayscale configuration. Click to view the value of grayscale.", "Component.Namespace.Master.Items.Body.HaveGrayscale": "This configuration has grayscale configuration. Click to view the value of grayscale.",
"Component.Namespace.Master.Items.Body.NewAdded": "New", "Component.Namespace.Master.Items.Body.NewAdded": "New",
"Component.Namespace.Master.Items.Body.NewAddedTips": "New Configuration", "Component.Namespace.Master.Items.Body.NewAddedTips": "New Configuration",
"Component.Namespace.Master.Items.Body.Modifed": "Modify", "Component.Namespace.Master.Items.Body.Modified": "Modified",
"Component.Namespace.Master.Items.Body.ModifedTips": "Modified Configuration", "Component.Namespace.Master.Items.Body.ModifiedTips": "Modified Configuration",
"Component.Namespace.Master.Items.Body.Deleted": "Delete", "Component.Namespace.Master.Items.Body.Deleted": "Deleted",
"Component.Namespace.Master.Items.Body.DeletedTips": "Deleted Configuration", "Component.Namespace.Master.Items.Body.DeletedTips": "Deleted Configuration",
"Component.Namespace.Master.Items.Body.ModifyTips": "Modify", "Component.Namespace.Master.Items.Body.ModifyTips": "Modify",
"Component.Namespace.Master.Items.Body.DeleteTips": "Delete", "Component.Namespace.Master.Items.Body.DeleteTips": "Delete",
"Component.Namespace.Master.Items.Body.Link.Title": "Included Configuration", "Component.Namespace.Master.Items.Body.Link.Title": "Overridden Configuration",
"Component.Namespace.Master.Items.Body.Link.NoCoverLinkItem": "Excluded Configuration", "Component.Namespace.Master.Items.Body.Link.NoCoverLinkItem": "No Overridden Configuration",
"Component.Namespace.Master.Items.Body.Public.Title": "Public Configuration", "Component.Namespace.Master.Items.Body.Public.Title": "Public Configuration",
"Component.Namespace.Master.Items.Body.Public.Published": "Released Configuration", "Component.Namespace.Master.Items.Body.Public.Published": "Released Configuration",
"Component.Namespace.Master.Items.Body.Public.NoPublish": "Unreleased Configuration", "Component.Namespace.Master.Items.Body.Public.NoPublish": "Unreleased Configuration",
"Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips1": "Owner of the current public namespace", "Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips1": "Owner of the current public namespace",
"Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips2": "No association with this namespace, please contact the owner of {{namespace. parentAppId}} to associate with this namespace in the {{namespace. parentAppId}} project.", "Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips2": "hasn't associated this namespace, please contact the owner of {{namespace.parentAppId}} to associate this namespace in the {{namespace.parentAppId}} project.",
"Component.Namespace.Master.Items.Body.Public.NoPublished": "Unreleased Configuration", "Component.Namespace.Master.Items.Body.Public.NoPublished": "No Released Configuration",
"Component.Namespace.Master.Items.Body.Public.PubishedAndCover": "Override this configuration", "Component.Namespace.Master.Items.Body.Public.PublishedAndCover": "Override this configuration",
"Component.Namespace.Master.Items.Body.NoPublished.Title": "No public configuration", "Component.Namespace.Master.Items.Body.NoPublished.Title": "No public configuration",
"Component.Namespace.Master.Items.Body.NoPublished.PublishedValue": "Released Value", "Component.Namespace.Master.Items.Body.NoPublished.PublishedValue": "Released Value",
"Component.Namespace.Master.Items.Body.NoPublished.NoPublishedValue": "Unreleased Value", "Component.Namespace.Master.Items.Body.NoPublished.NoPublishedValue": "Unreleased Value",
...@@ -235,32 +236,32 @@ ...@@ -235,32 +236,32 @@
"Component.Namespace.Master.Items.Body.HistoryView.NewAdded": "Add", "Component.Namespace.Master.Items.Body.HistoryView.NewAdded": "Add",
"Component.Namespace.Master.Items.Body.HistoryView.Updated": "Update", "Component.Namespace.Master.Items.Body.HistoryView.Updated": "Update",
"Component.Namespace.Master.Items.Body.HistoryView.Deleted": "Delete", "Component.Namespace.Master.Items.Body.HistoryView.Deleted": "Delete",
"Component.Namespace.Master.Items.Body.HistoryView.LoadingMore": "Loading more", "Component.Namespace.Master.Items.Body.HistoryView.LoadMore": "Load more",
"Component.Namespace.Master.Items.Body.HistoryView.NoHistory": "Unchanged History", "Component.Namespace.Master.Items.Body.HistoryView.NoHistory": "No Change History",
"Component.Namespace.Master.Items.Body.Instance.Tips": "Instance Instruction: Only show the Apollo instance that is visited last day", "Component.Namespace.Master.Items.Body.Instance.Tips": "Tips: Only show instances who have fetched configurations in the last 24 hrs ",
"Component.Namespace.Master.Items.Body.Instance.UsedNewItem": "Instance of using the latest configuration", "Component.Namespace.Master.Items.Body.Instance.UsedNewItem": "Instances using the latest configuration",
"Component.Namespace.Master.Items.Body.Instance.NoUsedNewItem": "Instance of using non-latest configuration", "Component.Namespace.Master.Items.Body.Instance.NoUsedNewItem": "Instances using outdated configuration",
"Component.Namespace.Master.Items.Body.Instance.AllInstance": "All Instances", "Component.Namespace.Master.Items.Body.Instance.AllInstance": "All Instances",
"Component.Namespace.Master.Items.Body.Instance.RefreshList": "Refresh List", "Component.Namespace.Master.Items.Body.Instance.RefreshList": "Refresh List",
"Component.Namespace.Master.Items.Body.Instance.ToSeeItem": "View Configuration", "Component.Namespace.Master.Items.Body.Instance.ToSeeItem": "View Configuration",
"Component.Namespace.Master.Items.Body.Instance.LoadingMore": "Loading more", "Component.Namespace.Master.Items.Body.Instance.LoadMore": "Load more",
"Component.Namespace.Master.Items.Body.Instance.ItemAppId": "App ID", "Component.Namespace.Master.Items.Body.Instance.ItemAppId": "App ID",
"Component.Namespace.Master.Items.Body.Instance.ItemCluster": "Cluster Name", "Component.Namespace.Master.Items.Body.Instance.ItemCluster": "Cluster Name",
"Component.Namespace.Master.Items.Body.Instance.ItemDataCenter": "Data Center", "Component.Namespace.Master.Items.Body.Instance.ItemDataCenter": "Data Center",
"Component.Namespace.Master.Items.Body.Instance.ItemIp": "IP", "Component.Namespace.Master.Items.Body.Instance.ItemIp": "IP",
"Component.Namespace.Master.Items.Body.Instance.ItemGetTime": "Configure getting time", "Component.Namespace.Master.Items.Body.Instance.ItemGetTime": "Configuration fetched time",
"Component.Namespace.Master.Items.Body.Instance.NoInstanceTips": "No Instance Information", "Component.Namespace.Master.Items.Body.Instance.NoInstanceTips": "No Instance Information",
"Component.PublishDeny.Title": "Release Restriction", "Component.PublishDeny.Title": "Release Restriction",
"Component.PublishDeny.Tips1": "You can't release ~{{env}} Editing environment configuration and releasing must be for different people, please ask someone who has the releasing authority of this namespace to operate the release.~", "Component.PublishDeny.Tips1": "You can't release! The operators to edit and release the configurations in {{env}} environment must be different, please find someone else who has the release permission of this namespace to do the release operation.",
"Component.PublishDeny.Tips2": "(If it is non working time or special situations, you may release by clicking the <mark> Emergency Release </mark> button.)", "Component.PublishDeny.Tips2": "(If it is non working time or a special situation, you may release by clicking the 'Emergency Release' button.)",
"Component.PublishDeny.EmergencyPublish": "Emergency Release", "Component.PublishDeny.EmergencyPublish": "Emergency Release",
"Component.PublishDeny.Close": "Close", "Component.PublishDeny.Close": "Close",
"Component.Publish.Title": "Release", "Component.Publish.Title": "Release",
"Component.Publish.Tips": "(Only the released configuration will be accessed by the client, and this release will only work in the current environment: {{env}})", "Component.Publish.Tips": "(Only the released configurations can be fetched by clients, and this release will only be applied to the current environment: {{env}})",
"Component.Publish.Grayscale": "Grayscale Release", "Component.Publish.Grayscale": "Grayscale Release",
"Component.Publish.GrayscaleTips": "(The configuration of grayscale releasing only works on the configuring instances in grayscale rules)", "Component.Publish.GrayscaleTips": "(The grayscale configurations are only applied to the instances specified in grayscale rules)",
"Component.Publish.AllPublish": "Full Release", "Component.Publish.AllPublish": "Full Release",
"Component.Publish.AllPublishTips": "(Full release configuration works on all instances)", "Component.Publish.AllPublishTips": "(Full release configurations are applied to all instances)",
"Component.Publish.ToSeeChange": "View changes", "Component.Publish.ToSeeChange": "View changes",
"Component.Publish.PublishedValue": "Released values", "Component.Publish.PublishedValue": "Released values",
"Component.Publish.Changes": "Changes", "Component.Publish.Changes": "Changes",
...@@ -269,203 +270,205 @@ ...@@ -269,203 +270,205 @@
"Component.Publish.ModifyUser": "Modifier", "Component.Publish.ModifyUser": "Modifier",
"Component.Publish.ModifyTime": "Modified Time", "Component.Publish.ModifyTime": "Modified Time",
"Component.Publish.NewAdded": "New", "Component.Publish.NewAdded": "New",
"Component.Publish.NewAddedTips": "New Added Configuration", "Component.Publish.NewAddedTips": "New Configuration",
"Component.Publish.Modifed": "Modify", "Component.Publish.Modified": "Modified",
"Component.Publish.ModifedTips": "Modified Configuration", "Component.Publish.ModifiedTips": "Modified Configuration",
"Component.Publish.Deleted": "Delete", "Component.Publish.Deleted": "Deleted",
"Component.Publish.DeletedTips": "Deleted Configuration", "Component.Publish.DeletedTips": "Deleted Configuration",
"Component.Publish.MasterValue": "Main version value", "Component.Publish.MasterValue": "Main version value",
"Component.Publish.GrayValue": "Grayscale version value", "Component.Publish.GrayValue": "Grayscale version value",
"Component.Publish.GrayPublishedValue": "Released grayscale version value", "Component.Publish.GrayPublishedValue": "Released grayscale version value",
"Component.Publish.GrayNoPublishedValue": "Unreleased grayscale version value", "Component.Publish.GrayNoPublishedValue": "Unreleased grayscale version value",
"Component.Publish.ItemNoChange": "No change on configuration", "Component.Publish.ItemNoChange": "No configuration changes",
"Component.Publish.GrayItemNoChange": "No change on grayscale configuration", "Component.Publish.GrayItemNoChange": "No configuration changes",
"Component.Publish.NoGrayItems": "Configuration Item without Grayscale", "Component.Publish.NoGrayItems": "No grayscale changes",
"Component.Publish.Release": "Release Name", "Component.Publish.Release": "Release Name",
"Component.Publish.ReleaseComment": "Comment", "Component.Publish.ReleaseComment": "Comment",
"Component.Publish.OpPublish": "Release", "Component.Publish.OpPublish": "Release",
"Component.Rollback.Goto": "Roll back to", "Component.Rollback.To": "roll back to",
"Component.Rollback.Tips": "This operation will roll back to the previous released version, and the current version is invalid, but no impact on the modifying configuration. You can check the current version on the releasing history page", "Component.Rollback.Tips": "This operation will roll back to the last released version, and the current version is abandoned, but there is no impact to the currently editing configurations. You may view the currently effective version in the release history page",
"Component.Rollback.ClickToView": "Click to view",
"Component.Rollback.ItemType": "Type", "Component.Rollback.ItemType": "Type",
"Component.Rollback.ItemKey": "Key", "Component.Rollback.ItemKey": "Key",
"Component.Rollback.RollbackBeforeValue": "Before rollback", "Component.Rollback.RollbackBeforeValue": "Before Rollback",
"Component.Rollback.RollbackAfterValue": "After rollback", "Component.Rollback.RollbackAfterValue": "After Rollback",
"Component.Rollback.Added": "Add", "Component.Rollback.Added": "Add",
"Component.Rollback.Modifed": "Update", "Component.Rollback.Modified": "Update",
"Component.Rollback.Deleted": "Delete", "Component.Rollback.Deleted": "Delete",
"Component.Rollback.NoChange": "No change on configuration", "Component.Rollback.NoChange": "No configuration changes",
"Component.Rollback.OpRollback": "Rollback", "Component.Rollback.OpRollback": "Rollback",
"Component.ShowText.Title": "View", "Component.ShowText.Title": "View",
"Login.Login": "Login", "Login.Login": "Login",
"Login.UserNameOrPasswordIncorrect": "Incorrect username or password", "Login.UserNameOrPasswordIncorrect": "Incorrect username or password",
"Login.LogoutSuccessfully": "Logout successfully", "Login.LogoutSuccessfully": "Logout Successfully",
"Index.MyProject": "My project", "Index.MyProject": "My projects",
"Index.CreateProject": "Create project", "Index.CreateProject": "Create project",
"Index.LoadingMore": "Loading more", "Index.LoadMore": "Load more",
"Index.FavoriteItems": "Collected items", "Index.FavoriteItems": "Favorite projects",
"Index.Topping": "Top", "Index.Topping": "Top",
"Index.FavoriteTip": "You haven't collected any items yet. You can collect items on the project homepage.~", "Index.FavoriteTip": "You haven't favorited any items yet. You can favorite items on the project homepage.",
"Index.RecentyViewedItems": "Recently browsed items", "Index.RecentlyViewedItems": "Recent projects",
"Index.GetCreateAppRoleFailed": "Failed to get the information of creating application permission", "Index.GetCreateAppRoleFailed": "Failed to get the information of create project permission",
"Index.Topped": "Top successfully", "Index.Topped": "Top Successfully",
"Index.CancelledFavorite": "Cancel collection successfully", "Index.CancelledFavorite": "Remove favorite successfully",
"Cluster.CreateCluster": "Create Cluster",
"Cluster.Tips.1": "By adding clusters, the same program can use different configuration in different clusters (such as different data centers)", "Cluster.Tips.1": "By adding clusters, the same program can use different configuration in different clusters (such as different data centers)",
"Cluster.Tips.2": "If the different clusters use the same configuration, there is no need to create clusters", "Cluster.Tips.2": "If the different clusters use the same configuration, there is no need to create clusters",
"Cluster.Tips.3": "By default, Apollo reads IDC attributes in /opt/settings/server. properties(Linux) or C:\\opt\\settings\\server.properties(Windows) files on the machine as cluster names, such as SHAJQ (Jinqiao Data Center), SHAOY (Ouyang Data Center)", "Cluster.Tips.3": "By default, Apollo reads IDC attributes in /opt/settings/server.properties(Linux) or C:\\opt\\settings\\server.properties(Windows) files on the machine as cluster names, such as SHAJQ (Jinqiao Data Center), SHAOY (Ouyang Data Center)",
"Cluster.Tips.4": "The cluster name created at here needs to be consistent with the IDC attribute in server.properties on the machine", "Cluster.Tips.4": "The cluster name created here should be consistent with the IDC attribute in server.properties on the machine",
"Cluster.CreaterNameTips": "(Deploy clusters such as SHAJQ, SHAOY or customized clusters such as SHAJQ-xx, SHAJQ-yy)", "Cluster.CreateNameTips": "(Cluster names such as SHAJQ, SHAOY or customized clusters such as SHAJQ-xx, SHAJQ-yy)",
"Cluster.ChooseEnvironment": "Select the environment", "Cluster.ChooseEnvironment": "Environment",
"Cluster.LoadingEnvironmentError": "Error in loading environment information", "Cluster.LoadingEnvironmentError": "Error in loading environment information",
"Cluster.ClusterCreated": "Create cluster successfully", "Cluster.ClusterCreated": "Create cluster successfully",
"Cluster.ClusterCreateFailed": "Fail to create cluster", "Cluster.ClusterCreateFailed": "Failed to create cluster",
"Cluster.PleaseChooseEnvironment": "Please select the environment", "Cluster.PleaseChooseEnvironment": "Please select the environment",
"Config.Title": "Apollo Configuration Center", "Config.Title": "Apollo Configuration Center",
"Config.AppIdNotFound": "Nothingness", "Config.AppIdNotFound": "doesn't exist, ",
"Config.ClickByCreate": "Click to create", "Config.ClickByCreate": "click to create",
"Config.EnvList": "Environment List", "Config.EnvList": "Environments",
"Config.EnvListTips": "Manage the configuration of different environments and clusters by switching environments and clusters", "Config.EnvListTips": "Manage the configuration of different environments and clusters by switching environments and clusters",
"Config.ProjectInfo": "Project Information", "Config.ProjectInfo": "Project Info",
"Config.ModifyBasicProjectInfo": "Modify the basic information of project", "Config.ModifyBasicProjectInfo": "Modify project's basic information",
"Config.Favorite": "Collection", "Config.Favorite": "Favorite",
"Config.CancelFavorite": "Cancel Collection", "Config.CancelFavorite": "Cancel Favorite",
"Config.MissEnv": "Lack of environment", "Config.MissEnv": "Missing environment",
"Config.MissNamespace": "Lack of Namespace", "Config.MissNamespace": "Missing Namespace",
"Config.ProjectManage": "Manage Project", "Config.ProjectManage": "Manage Project",
"Config.CreateAppMissEnv": "Fill in environment", "Config.CreateAppMissEnv": "Recover Environments",
"Config.CreateAppMissNamespace": "Fill in Namespace", "Config.CreateAppMissNamespace": "Recover Namespaces",
"Config.AddCluster": "Add Cluster", "Config.AddCluster": "Add Cluster",
"Config.AddNamespace": "Add Namespace", "Config.AddNamespace": "Add Namespace",
"Config.CurrentlyOperatorEnv": "Current operating environment", "Config.CurrentlyOperatorEnv": "Current environment",
"Config.DoNotRemindAgain": "No longer prompt", "Config.DoNotRemindAgain": "No longer prompt",
"Config.Note": "Note", "Config.Note": "Note",
"Config.ClusterIsDefualtTipContent": "All instances that do not belong to the'{{name}}'cluster will use the default cluster (current page) configuration, and those that belong to the'{{name}}' cluster will use the corresponding cluster configuration!", "Config.ClusterIsDefaultTipContent": "All instances that do not belong to the '{{name}}' cluster will fetch the default cluster (current page) configuration, and those that belong to the '{{name}}' cluster will use the corresponding cluster configuration!",
"Config.ClusterIsCustomTipContent": "Instances belonging to the'{{name}}'cluster only use the configuration of the'{{name}}' cluster (the current page), and the default cluster configuration is used only when the corresponding namespace has not been published in the current cluster.", "Config.ClusterIsCustomTipContent": "Instances belonging to the '{{name}}' cluster will only fetch the configuration of the '{{name}}' cluster (the current page), and the default cluster configuration will only be fetched when the corresponding namespace has not been released in the current cluster.",
"Config.HasNotPublishNamespace": "The following environment/cluster has unpublished configuration, the client can not get unpublished configuration, please publish in time.", "Config.HasNotPublishNamespace": "The following environment/cluster has unreleased configurations, the client will not fetch the unreleased configurations, please release them in time.",
"Config.DeleteItem.DialogTitle": "Delete configuration", "Config.DeleteItem.DialogTitle": "Delete configuration",
"Config.DeleteItem.DialogContent": "You are deleting the configuration whose Key is <b>'{{config.key}} </b> Value is <b>'{{config.value}} </b>. <br> Are you sure you want to delete the configuration?", "Config.DeleteItem.DialogContent": "You are deleting the configuration whose Key is <b>'{{config.key}}'</b> Value is <b>'{{config.value}}'</b>. <br> Are you sure to delete the configuration?",
"Config.PublishNoPermission.DialogTitle": "Release", "Config.PublishNoPermission.DialogTitle": "Release",
"Config.PublishNoPermission.DialogContent": "You do not have publishing permissions. ~Ask the Project Administrator'{{masterUsers}}'to assign publishing permissions.", "Config.PublishNoPermission.DialogContent": "You do not have release permission. Please ask the project administrators '{{masterUsers}}' to authorize release permission.",
"Config.ModifyNoPermission.DialogTitle": "Application for Configuration Permission", "Config.ModifyNoPermission.DialogTitle": "Apply for Configuration Permission",
"Config.ModifyNoPermission.DialogContent": "Assign editing or publishing permissions to project administrator'{{masterUsers}}'", "Config.ModifyNoPermission.DialogContent": "Please ask the project administrators '{{masterUsers}}' to authorize release or edit permission.",
"Config.MasterNoPermission.DialogTitle": "Application for Configuration Permission", "Config.MasterNoPermission.DialogTitle": "Apply for Configuration Permission",
"Config.MasterNoPermission.DialogContent": "You are not a project administrator. Only project administrators have the right to add clusters and namespaces. For administrator privileges, ask the project administrator'{{masterUsers}}'to assign administrator privileges", "Config.MasterNoPermission.DialogContent": "You are not this project's administrator. Only project administrators have the permission to add clusters and namespaces. Please ask the project administrators '{{masterUsers}}' to assign administrator permission",
"Config.NamespaceLocked.DialogTitle": "Editorial constraints", "Config.NamespaceLocked.DialogTitle": "Edit not allowed",
"Config.NamespaceLocked.DialogContent": "Currently namespace is being edited by'{{lockOwner}}', and a publication can only be modified by one person.", "Config.NamespaceLocked.DialogContent": "Current namespace is being edited by '{{lockOwner}}', and a release phase can only be edited by one person.",
"Config.RollbackAlert.DialogTitle": "Rollback", "Config.RollbackAlert.DialogTitle": "Rollback",
"Config.RollbackAlert.DialogContent": "Are you sure you want to roll back?", "Config.RollbackAlert.DialogContent": "Are you sure to roll back?",
"Config.EmergencyPublishAlert.DialogTitle": "Emergency release", "Config.EmergencyPublishAlert.DialogTitle": "Emergency release",
"Config.EmergencyPublishAlert.DialogContent": "Are you sure it needs to be released urgently?", "Config.EmergencyPublishAlert.DialogContent": "Are you sure to perform the emergency release?",
"Config.DeleteBranch.DialogTitle": "Delete grayscale", "Config.DeleteBranch.DialogTitle": "Delete grayscale",
"Config.DeleteBranch.DialogContent": "Deleting gray level will lose the configuration of gray level. Are you sure you want to delete it?", "Config.DeleteBranch.DialogContent": "Deleting grayscale will lose the grayscale configurations. Are you sure to delete it?",
"Config.UpdateRuleTips.DialogTitle": "Update gray rule prompt", "Config.UpdateRuleTips.DialogTitle": "Update gray rule prompt",
"Config.UpdateRuleTips.DialogContent": "Grayscale rules are in effect, but it is found that grayscale versions have unpublished configurations that require manual grayscale publishing to take effect.", "Config.UpdateRuleTips.DialogContent": "Grayscale rules are in effect. However there are unreleased configurations in grayscale version, they won't be effective until a manual grayscale release is performed.",
"Config.MergeAndReleaseDeny.DialogTitle": "Full release", "Config.MergeAndReleaseDeny.DialogTitle": "Full release",
"Config.MergeAndReleaseDeny.DialogContent": "The main version of namespace has unpublished configuration. Please publish the main version configuration first.", "Config.MergeAndReleaseDeny.DialogContent": "The main version has unreleased configuration. Please release the main version first.",
"Config.GrayReleaseWithoutRulesTips.DialogTitle": "Missing gray rule prompt", "Config.GrayReleaseWithoutRulesTips.DialogTitle": "Missing gray rule prompt",
"Config.GrayReleaseWithoutRulesTips.DialogContent": "The grayscale version has not been configured with any grayscale rules. Please configure the grayscale rules.", "Config.GrayReleaseWithoutRulesTips.DialogContent": "The grayscale version has not configured any grayscale rule. Please configure the grayscale rules.",
"Config.DeleteNamespaceDenyForMasterInstance.DialogTitle": "Delete Namespace warning information", "Config.DeleteNamespaceDenyForMasterInstance.DialogTitle": "Delete namespace warning",
"Config.DeleteNamespaceDenyForMasterInstance.DialogContent": "It was found that <B>'{{delete Namespace Context. namespace. instancesCount}}'</b> instances were using Namespace ('{{delete Namespace Context. namespace. baseInfo. namespace Name}}'), and deleting Namespace would result in instances not getting configuration. <br> Please go to <ins> \"Instance List\"</ins> to confirm the instance information. If you confirm that the relevant instances are no longer using the Namespace configuration, you can contact the Apollo responsible person to delete the instance information (Instance Config) or wait for the instance to expire automatically 24 hours before deleting.", "Config.DeleteNamespaceDenyForMasterInstance.DialogContent": "There are <b>'{{deleteNamespaceContext.namespace.instancesCount}}'</b> instances using namespace ('{{deleteNamespaceContext.namespace.baseInfo.namespaceName}}'), and deleting namespace would cause those instances failed to fetch configuration. <br> Please go to <ins> \"Instance List\"</ins> to confirm the instance information. If you confirm that the relevant instances are no longer using the namespace configuration, you can contact the Apollo administrators to delete the instance information (Instance Config) or wait for the instance to expire automatically 24 hours before deletion.",
"Config.DeleteNamespaceDenyForBranchInstance.DialogTitle": "Delete Namespace warning information", "Config.DeleteNamespaceDenyForBranchInstance.DialogTitle": "Delete namespace warning information",
"Config.DeleteNamespaceDenyForBranchInstance.DialogContent": "It was found that <B>'{{delete Namespace Context. namespace. branch. latest Release Instances. total}}'</b> instances were using the gray level version of Namespace ('{{delete Namespace Context. namespace. baseInfo. namespace Name}}') configuration, and deleting Namespace would result in instances not getting the configuration. <br> Please go to <ins> \"gray version\"=> \"instance list\"</ins> to confirm the instance information. If you confirm that the relevant instances are no longer using the Namespace configuration, you can contact the Apollo responsible person to delete the instance information (Instance Config) or wait for the instance to expire automatically 24 hours before deleting.", "Config.DeleteNamespaceDenyForBranchInstance.DialogContent": "There are <b>'{{deleteNamespaceContext.namespace.branch.latestReleaseInstances.total}}'</b> instances using the graysacle version of namespace ('{{deleteNamespaceContext.namespace.baseInfo.namespaceName}}') configuration, and deleting Namespace would cause those instances failed to fetch configuration. <br> Please go to <ins> \"Grayscale Version\"=> \"Instance List\"</ins> to confirm the instance information. If you confirm the relevant instances are no longer using the namespace configuration, you can contact the Apollo administrators to delete the instance information (Instance Config) or wait for the instance to expire automatically 24 hours before deletion.",
"Config.DeleteNamespaceDenyForPublicNamespace.DialogTitle": "Delete Namespace Failure Tip", "Config.DeleteNamespaceDenyForPublicNamespace.DialogTitle": "Delete Namespace Failure Tip",
"Config.DeleteNamespaceDenyForPublicNamespace.DialogContent": "Delete Namespace Failure Tip", "Config.DeleteNamespaceDenyForPublicNamespace.DialogContent": "Delete Namespace Failure Tip",
"Config.DeleteNamespaceDenyForPublicNamespace.PleaseEnterAppId": "Please enter appId", "Config.DeleteNamespaceDenyForPublicNamespace.PleaseEnterAppId": "Please enter appId",
"Config.SyntaxCheckFailed.DialogTitle": "Grammar Checking Error", "Config.SyntaxCheckFailed.DialogTitle": "Syntax Check Error",
"Config.SyntaxCheckFailed.DialogContent": "Delete Namespace Failure Tip", "Config.SyntaxCheckFailed.DialogContent": "Delete Namespace Failure Tip",
"Config.CreateBranchTips.DialogTitle": "Creating Grayscale Notice", "Config.CreateBranchTips.DialogTitle": "Create Grayscale Notice",
"Config.CreateBranchTips.DialogContent": "By creating gray level version, you can do gray level test for some configurations <br> gray level process as follows: <br> &nbsp; &nbsp; (1) create gray level version <br> &nbsp; &nbsp; (2) configure gray level configuration items <br> &nbsp; &nbsp; (3) configure gray level rules. If it is private namespace, it can be gray level according to the IP of client, if it is public name. Gray level <br> &nbsp; &nbsp; &nbsp; 4. Gray level publishing <br> gray level version has two final results: <b> full publishing and abandoning gray level </b> <br> <b> full publishing </b>: gray level configuration is combined with the main version and distributed, all clients will use the combined configuration <br> <b> abandon gray level </b>: remove gray. In degree version, all clients will use the configuration <br> of the main version: <br> &nbsp; &nbsp; &nbsp; 1. If the gray level version has been published, then the gray level rules will be changed immediately without the need for gray level publication again.", "Config.CreateBranchTips.DialogContent": "By creating grayscale version, you can do grayscale test for some configurations. <br> Grayscale process is as follows: <br> &nbsp; &nbsp; 1. Create grayscale version <br> &nbsp; &nbsp; 2. Configure grayscale configuration items <br> &nbsp; &nbsp; 3. Configure grayscale rules. If it is a private namespace, it can be grayed according to the IP of client. If it is a public namespace, it can be grayed accodring to both appid and the IP. <br> &nbsp; &nbsp; 4. Grayscale release <br> Grayscale version has two final results: <b> Full release and Abandon grayscale</b> <br> <b>Full release</b>: grayscale configurations are merged with the main version and released, all clients will use the merged configurations <br> <b> Abandon grayscale</b>: Delete grayscale version. All clients will use the configurations of the main version<br> Notice: <br> &nbsp; &nbsp; 1. If the grayscale version has been released, then the grayscale rules will be effective immediately without the need to release grayscale configuration again.",
"Config.ProjectMissEnvInfos": "Current project has environment missing, please click on the left side of the page to fill in the missing environment to fill in the data.", "Config.ProjectMissEnvInfos": "There are missing environments in the current project, please click \"Recover Environments\" on the left side of the page to do the recovery.",
"Config.ProjectMissNamespaceInfos": "There is a missing Namespace in the current environment. Please click \"Fill in Namespace\" on the left side of the page to fill in the data.", "Config.ProjectMissNamespaceInfos": "There are missing namespaces in the current environment. Please click \"Recover Namespaces\" on the left side of the page to do the recovery.",
"Config.SystemError": "System error, please try again or contact the system manager", "Config.SystemError": "System error, please try again or contact the system administrator",
"Config.FavoriteSuccessfully": "Successful collection", "Config.FavoriteSuccessfully": "Favorite Successfully",
"Config.FavoriteFailed": "Collection failure", "Config.FavoriteFailed": "Failed to favorite",
"Config.CancelledFavorite": "Successful Cancellation of Collection", "Config.CancelledFavorite": "Cancel favorite successfully",
"Config.CanceFavoriteFailed": "Failure to Cancel Collection", "Config.CancelFavoriteFailed": "Failed to cancel the favorite",
"Config.GetrUserInfoFailed": "Failed to obtain user login information", "Config.GetUserInfoFailed": "Failed to obtain user login information",
"Config.LoadingAllNamespaceError": "Error loading configuration information", "Config.LoadingAllNamespaceError": "Failed to load configuration",
"Config.CanceFavoriteError": "Failure to Cancel Collection", "Config.CancelFavoriteError": "Failure to Cancel Collection",
"Config.Deleted": "Successful deletion", "Config.Deleted": "Delete Successfully",
"Config.DeleteFailed": "Delete failed", "Config.DeleteFailed": "Failed to delete",
"Config.GrayscaleCreated": "Creating Grayscale Successfully", "Config.GrayscaleCreated": "Create Grayscale Successfully",
"Config.GrayscaleCreateFailed": "Failed to create grayscale", "Config.GrayscaleCreateFailed": "Failed to create grayscale",
"Config.BranchDeleted": "Branch deletion succeeded", "Config.BranchDeleted": "Delete branch successfully",
"Config.BranchDeleteFailed": "Branch deletion failed", "Config.BranchDeleteFailed": "Failed to delete branch",
"Config.DeleteNamespaceFailedTips": "The following applications are associated with this public Namespace and must delete all associated Namespace before deleting the public Namespace", "Config.DeleteNamespaceFailedTips": "The following projects are associated with this public namespace and they must all be deleted deleting the public Namespace",
"Config.DeleteNamespaceNoPermissionFailedTitle": "Delete failed", "Config.DeleteNamespaceNoPermissionFailedTitle": "Failed to delete",
"Config.DeleteNamespaceNoPermissionFailedTips": "You do not have Project Administrator privileges. Only Administrators can delete Namespace. Please find Project Administrator [{{usres}}] to delete Namespace.", "Config.DeleteNamespaceNoPermissionFailedTips": "You do not have Project Administrator permission. Only Administrators can delete namespace. Please ask Project Administrators [{{usres}}] to delete namespace.",
"Delete.Title": "Delete applications, clusters, AppNamespace", "Delete.Title": "Delete applications, clusters, AppNamespace",
"Delete.DeleteApp": "Delete applications", "Delete.DeleteApp": "Delete application",
"Delete.DeleteAppTips": "(Because deleting applications has a large impact, system administrators are only allowed to delete them for the time being. Make sure that no client reads the configuration of the application before deleting it.)", "Delete.DeleteAppTips": "(Because deleting applications has very large impacts, only system administrators are allowed to delete them for the time being. Make sure that no client fetches the configuration of the application before deleting it.)",
"Delete.AppIdTips": "(Please query application information before deleting)", "Delete.AppIdTips": "(Please query application information before deleting)",
"Delete.AppInfo": "Application information", "Delete.AppInfo": "Application information",
"Delete.DeleteCluster": "Delete clusters", "Delete.DeleteCluster": "Delete clusters",
"Delete.DeleteClusterTips": "(Because deleting the cluster has a large impact, only system administrators are allowed to delete it for the time being. Make sure that no client reads the configuration of the cluster before deleting it.)", "Delete.DeleteClusterTips": "(Because deleting clusters has very large impacts, only system administrators are allowed to delete them for the time being. Make sure that no client fetches the configuration of the cluster before deleting it.)",
"Delete.EnvName": "Environment Name", "Delete.EnvName": "Environment Name",
"Delete.ClusterNameTips": "(Please query application cluster information before deleting)", "Delete.ClusterNameTips": "(Please query cluster information before deletion)",
"Delete.ClusterInfo": "Cluster information", "Delete.ClusterInfo": "Cluster information",
"Delete.DeleteNamespace": "Delete AppNamespace", "Delete.DeleteNamespace": "Delete AppNamespace",
"Delete.DeleteNamespaceTips": "(Note that Namespace and AppNamespace in all environments will be deleted! If you just want to delete the Namespace of an environment, let the user delete it on the project page!", "Delete.DeleteNamespaceTips": "(Note that Namespace and AppNamespace in all environments will be deleted! If you just want to delete the namespace of some environment, let the user delete it on the project page!",
"Delete.DeleteNamespaceTips2": "At present, users can delete the associated Namespace and private Namespace by themselves, but they can not delete the meta-information of AppNamespace. Because deleting AppNamespace has a large impact, it is only allowed to be deleted by system administrators for the time being. For public Namespace, it is necessary to ensure that the associated AppNamespace is not applied.", "Delete.DeleteNamespaceTips2": "Currently users can delete the associated namespace and private namespace by themselves, but they can not delete the AppNamespace. Because deleting AppNamespace has very large impacts, it is only allowed to be deleted by system administrators for the time being. For public Namespace, it is necessary to ensure that no application associates the AppNamespace",
"Delete.AppNamespaceName": "AppNamespace name", "Delete.AppNamespaceName": "AppNamespace name",
"Delete.AppNamespaceNameTips": "(For namespaces of non-property types, add type suffixes, such as apollo.xml)", "Delete.AppNamespaceNameTips": "(For non-properties namespaces, please add the suffix, such as apollo.xml)",
"Delete.AppNamespaceInfo": "AppNamespace Information", "Delete.AppNamespaceInfo": "AppNamespace Information",
"Delete.IsRootUserTips": "The current page is open only to Apollo administrators", "Delete.IsRootUserTips": "The current page is only accessible to Apollo administrators",
"Delete.PleaseEnterAppId": "Please enter appId", "Delete.PleaseEnterAppId": "Please enter appId",
"Delete.AppIdNotFound": "AppId:'{{appId}}'does not exist!", "Delete.AppIdNotFound": "AppId: '{{appId}}' does not exist!",
"Delete.AppInfoContent": "Application name:'{{appName}}'department:'{{departmentName}} ({{departmentId}})'person in charge:'{{ownerName}}'", "Delete.AppInfoContent": "Application name: '{{appName}}' department: '{{departmentName}}({{departmentId}})' owner: '{{ownerName}}'",
"Delete.ConfirmDeleteAppId": "Confirm to delete AppId:'{{appId}}'?", "Delete.ConfirmDeleteAppId": "Are you sure to delete AppId: '{{appId}}'?",
"Delete.Deleted": "Successful deletion", "Delete.Deleted": "Delete Successfully",
"Delete.PleaseEnterAppIdAndEnvAndCluster": "Enter appId, environment, and cluster name", "Delete.PleaseEnterAppIdAndEnvAndCluster": "Please enter appId, environment, and cluster name",
"Delete.ClusterInfoContent": "AppId:'{{appId}}'environment:'{{env}}' cluster name:'{{cluster Name}}'", "Delete.ClusterInfoContent": "AppId: '{{appId}}' environment: '{{env}}' cluster name: '{{clusterName}}'",
"Delete.ConfirmDeleteCluster": "Confirm to delete the cluster? AppId:'{{appId}}'environment:'{{env}}' cluster name:'{{cluster Name}}'", "Delete.ConfirmDeleteCluster": "Are you sure to delete the cluster? AppId: '{{appId}}' environment: '{{env}}' cluster name:'{{clusterName}}'",
"Delete.PleaseEnterAppIdAndNamespace": "Please enter appId and AppNamespace names", "Delete.PleaseEnterAppIdAndNamespace": "Please enter appId and AppNamespace names",
"Delete.AppNamespaceInfoContent": "AppId:'{{appId}}'AppNamespace name:'{{namespace}}' isPublic:'{{isPublic}}'", "Delete.AppNamespaceInfoContent": "AppId: '{{appId}}' AppNamespace name: '{{namespace}}' isPublic: '{{isPublic}}'",
"Delete.ConfirmDeleteNamespace": "Confirm to delete AppNamespace and Namespace for all environments? AppId:'{{appId}}'environment:'All environments' AppNamespace name:'{{namespace}}'", "Delete.ConfirmDeleteNamespace": "Are you sure to delete AppNamespace and Namespace for all environments? AppId: '{{appId}}' environment: 'All environments' AppNamespace name: '{{namespace}}'",
"Namespace.Title": "New Namespace", "Namespace.Title": "New Namespace",
"Namespace.UnderstandMore": "(Click to learn more about Namespace)", "Namespace.UnderstandMore": "(Click to learn more about Namespace)",
"Namespace.Link.Tips1": "Applications can override the configuration of a common Namespace by associating a common namespace", "Namespace.Link.Tips1": "Applications can override the configuration of a public namespace by associating a public namespace",
"Namespace.Link.Tips2": "If the application does not need to override the configuration of the common Namespace, then there is no need to associate the common Namespace", "Namespace.Link.Tips2": "If the application does not need to override the configuration of the public namespace, then there is no need to associate the public namespace",
"Namespace.CreatePublic.Tips1": "The configuration of the public Namespace can be read by any project", "Namespace.CreatePublic.Tips1": "The configuration of the public Namespace can be fetched by any application",
"Namespace.CreatePublic.Tips2": "Configuration of common components can be achieved by creating a common Namespace, and the need for multiple applications to share the same configuration can be achieved.", "Namespace.CreatePublic.Tips2": "Configuration of public components or the need for multiple applications to share the same configuration can be achieved by creating a public namespace.",
"Namespace.CreatePublic.Tips3": "If other applications need to cover the configuration of the public part, you can associate the public Namespace with other applications, and then configure the configuration that needs to be covered in the associated Namespace.", "Namespace.CreatePublic.Tips3": "If other applications need to override the configuration of the public namespace, you can associate the public namespace in other applications, and then configure the configuration that needs to be overridden in the associated namespace.",
"Namespace.CreatePublic.Tips4": "If other applications do not need to cover the configuration of common parts, then there is no need to associate common Namespace with other applications.", "Namespace.CreatePublic.Tips4": "If other applications do not need to override the configuration of public namespace, then there is no need to associate public namespace in other applications.",
"Namespace.CreatePrivate.Tips1": "The configuration of private Namespace can only be obtained by the application to which it belongs.", "Namespace.CreatePrivate.Tips1": "The configuration of a private Namespace can only be fetched by the application to which it belongs.",
"Namespace.CreatePrivate.Tips2": "Group management configuration can be achieved by creating a private Namespace", "Namespace.CreatePrivate.Tips2": "Group management configuration can be achieved by creating a private namespace",
"Namespace.CreatePrivate.Tips3": "The format of private Namespace can be xml, yml, yaml, json, txt. You can get the content of Namespace in non-property format through the ConfigFile interface in apollo-client.", "Namespace.CreatePrivate.Tips3": "The format of private namespaces can be xml, yml, yaml, json, txt. You can get the content of namespace in non-property format through the ConfigFile interface in apollo-client.",
"Namespace.CreatePrivate.Tips4": "The 1.3.0 and above versions of apollo-client provide better support for yaml/yml. Config objects can be obtained directly through ConfigService.getConfig (\"someNamespace.yml\"), or through @EnableApolloConfig (\"someNamespace.yml\") or apollo.bootstrap.namespaces=Namespace.yml to inject YML configuration into Spring/Spring Boot. Go in", "Namespace.CreatePrivate.Tips4": "The 1.3.0 and above versions of apollo-client provide better support for yaml/yml. Config objects can be obtained directly through ConfigService.getConfig(\"someNamespace.yml\"), or through @EnableApolloConfig(\"someNamespace.yml\") or apollo.bootstrap.namespaces=someNamespace.yml to inject YML configuration into Spring/Spring Boot",
"Namespace.CreateNamespcae": "Create Namespace", "Namespace.CreateNamespace": "Create Namespace",
"Namespace.AssociationPublicNamespcae": "Associated Public Namespace", "Namespace.AssociationPublicNamespace": "Associate Public Namespace",
"Namespace.ChooseCluster": "Select Cluster", "Namespace.ChooseCluster": "Select Cluster",
"Namespace.NamespaceName": "Name", "Namespace.NamespaceName": "Name",
"Namespace.AutoAddDepartmentPrefix": "Automatically add Department prefix", "Namespace.AutoAddDepartmentPrefix": "Add department prefix",
"Namespace.AutoAddDepartmentPrefixTips": "(The name of a public Namespace needs to be globally unique, and adding a department prefix helps ensure global uniqueness)", "Namespace.AutoAddDepartmentPrefixTips": "(The name of a public namespace needs to be globally unique, and adding a department prefix helps ensure global uniqueness)",
"Namespace.NamespcaeType": "type", "Namespace.NamespaceType": "Type",
"Namespace.NamespcaeType.Public": "Public", "Namespace.NamespaceType.Public": "Public",
"Namespace.NamespcaeType.Private": "Private", "Namespace.NamespaceType.Private": "Private",
"Namespace.Remark": "Remarks", "Namespace.Remark": "Remarks",
"Namespace.Namespace": "Namespace", "Namespace.Namespace": "Namespace",
"Namespace.PleaseChooseNamespace": "Please select Namespace", "Namespace.PleaseChooseNamespace": "Please select namespace",
"Namespace.LoadingPublicNamespaceError": "Loading common namespace errors", "Namespace.LoadingPublicNamespaceError": "Failed to load public namespace",
"Namespace.LoadingAppInfoError": "Error loading App information", "Namespace.LoadingAppInfoError": "Failed to load App information",
"Namespace.PleaseChooseCluster": "Select Cluster", "Namespace.PleaseChooseCluster": "Select Cluster",
"Namespace.ChecknamespaceNameLengthTip": "The namespace name should not be greater than 100 characters. Department prefix:'{{department Length}}'characters, name {{namespace Length}} characters", "Namespace.CheckNamespaceNameLengthTip": "The namespace name should not be longer than 32 characters. Department prefix:'{{departmentLength}}' characters, name {{namespaceLength}} characters",
"SericeConfig.Title": "Application Configuration", "ServiceConfig.Title": "System Configuration",
"SericeConfig.Tips": "(Maintain Apollo PortalDB.ServerConfig table data, override configuration items if they already exist, or create configuration items. Configuration updates take effect automatically in a minute)", "ServiceConfig.Tips": "(Maintain Apollo PortalDB.ServerConfig table data, will override configuration items if they already exist, or create configuration items. Configuration updates take effect automatically in a minute)",
"SericeConfig.Key": "Key", "ServiceConfig.Key": "Key",
"SericeConfig.KeyTips": "(Please query the configuration information before modifying the configuration)", "ServiceConfig.KeyTips": "(Please query the configuration information before modifying the configuration)",
"SericeConfig.Value": "Value", "ServiceConfig.Value": "Value",
"SericeConfig.Comment": "Comment", "ServiceConfig.Comment": "Comment",
"SericeConfig.Saved": "Successful Preservation", "ServiceConfig.Saved": "Save Successfully",
"SericeConfig.SaveFailed": "Save failed", "ServiceConfig.SaveFailed": "Failed to Save",
"SericeConfig.PleaseEnterKey": "Please enter key", "ServiceConfig.PleaseEnterKey": "Please enter key",
"SericeConfig.KeyNotExistsAndCreateTip": "Key:'{{key}}'does not exist. Click Save to create the configuration item.", "ServiceConfig.KeyNotExistsAndCreateTip": "Key: '{{key}}' does not exist. Click Save to create the configuration item.",
"SericeConfig.KeyExistsAndSaveTip": "Key:'{{key}}'already exists. Clicking Save will override the configuration item.", "ServiceConfig.KeyExistsAndSaveTip": "Key: '{{key}}' already exists. Click Save will override the configuration item.",
"SystemInfo.Title": "system information", "SystemInfo.Title": "System Information",
"SystemInfo.SystemVersion": "System version", "SystemInfo.SystemVersion": "System version",
"SystemInfo.Tips1": "The environment list comes from the <strong>apollo.portal.envs</strong> configuration in Apollo PortalDB.ServerConfig, and can be accessed to <a href=\"{{serverConfigUrl}}\"> system parameters </a> page configuration. More information can be referred to <a href=\"{{wikiUrl}}\"> distributed deployment guide </a> in <strong>apollo.portal.envs-a supportable environment list.</ strong> chapters.", "SystemInfo.Tips1": "The environment list comes from the <strong>apollo.portal.envs</strong> configuration in Apollo PortalDB.ServerConfig, and can be configured in <a href=\"{{serverConfigUrl}}\">System Configuration</a> page. For more information, please refer the <strong>apollo.portal.envs - supportable environment list</strong> section in <a href=\"{{wikiUrl}}\">Distributed Deployment Guide</a>.",
"SystemInfo.Tips2": "The Meta server address shows the meta server information for this environment configuration. For more information, please refer to the <strong> meta service information for configuring apollo-portal </strong> section in <a href=\"{{wikiUrl}}\"> Distributed Deployment Guide </a>.", "SystemInfo.Tips2": "The meta server address shows the meta server information for this environment configuration. For more information, please refer the <strong>Configuring meta service information for apollo-portal</strong> section in <a href=\"{{wikiUrl}}\">Distributed Deployment Guide</a>.",
"SystemInfo.Active": "Active", "SystemInfo.Active": "Active",
"SystemInfo.ActiveTips": "(Current environment status is abnormal, please check with the system information below and Check Health results of AdminService)", "SystemInfo.ActiveTips": "(Current environment status is abnormal, please diagnose with the system information below and Check Health results of AdminService)",
"SystemInfo.MetaServerAddress": "Meta server address", "SystemInfo.MetaServerAddress": "Meta server address",
"SystemInfo.ConfigServices": "Config Services", "SystemInfo.ConfigServices": "Config Services",
"SystemInfo.ConfigServices.Name": "Name", "SystemInfo.ConfigServices.Name": "Name",
...@@ -480,97 +483,97 @@ ...@@ -480,97 +483,97 @@
"SystemInfo.AdminServices.HomePageUrl": "Home Page Url", "SystemInfo.AdminServices.HomePageUrl": "Home Page Url",
"SystemInfo.AdminServices.CheckHealth": "Check Health", "SystemInfo.AdminServices.CheckHealth": "Check Health",
"SystemInfo.NoAdminServiceTips": "No admin service found!", "SystemInfo.NoAdminServiceTips": "No admin service found!",
"SystemInfo.IsRootUser": "The current page is open only to Apollo administrators", "SystemInfo.IsRootUser": "The current page is only accessible to Apollo administrators",
"SystemRole.Title": "System privilege management", "SystemRole.Title": "System Permission Management",
"SystemRole.AddCreateAppRoleToUser": "Create application privileges for users", "SystemRole.AddCreateAppRoleToUser": "Create application permission for users",
"SystemRole.AddCreateAppRoleToUserTips": "(When role.create-application.enabled=true is set in system configurations, only super admin and those accounts with Create application privileges can create application)", "SystemRole.AddCreateAppRoleToUserTips": "(When role.create-application.enabled=true is set in system configurations, only super admin and those accounts with Create application permission can create application)",
"SystemRole.ChooseUser": "User Selection", "SystemRole.ChooseUser": "Select User",
"SystemRole.Add": "Add to", "SystemRole.Add": "Add",
"SystemRole.AuthorizedUser": "Users with privileges", "SystemRole.AuthorizedUser": "Users with permission",
"SystemRole.ModifyAppAdminUser": "Modify Application Administrator Allocation Permissions", "SystemRole.ModifyAppAdminUser": "Modify Application Administrator Allocation Permissions",
"SystemRole.ModifyAppAdminUserTips": "(When role.manage-app-master.enabled=true is set in system configurations, only super admin and those accounts with application administrator allocation permissions can modify the application's administrators)", "SystemRole.ModifyAppAdminUserTips": "(When role.manage-app-master.enabled=true is set in system configurations, only super admin and those accounts with application administrator allocation permissions can modify the application's administrators)",
"SystemRole.AppIdTips": "(Please query the application information first)", "SystemRole.AppIdTips": "(Please query the application information first)",
"SystemRole.AppInfo": "Application information", "SystemRole.AppInfo": "Application information",
"SystemRole.AllowAppMasterAssignRole": "Allow this user to add Master as an administrator", "SystemRole.AllowAppMasterAssignRole": "Allow this user to add Master as an administrator",
"SystemRole.DeleteAppMasterAssignRole": "Prohibit this user from adding Master as an administrator", "SystemRole.DeleteAppMasterAssignRole": "Disallow this user to add Master as an administrator",
"SystemRole.IsRootUser": "The current page is open only to Apollo administrators", "SystemRole.IsRootUser": "The current page is only accessible to Apollo administrators",
"SystemRole.PleaseChooseUser": "Please select a user name", "SystemRole.PleaseChooseUser": "Please select a user",
"SystemRole.Added": "Added Successfully", "SystemRole.Added": "Add Successfully",
"SystemRole.AddFailed": "Failure to add", "SystemRole.AddFailed": "Failed to add",
"SystemRole.Deleted": "Successful deletion", "SystemRole.Deleted": "Delete Successfully",
"SystemRole.DeleteFailed": "Delete failed", "SystemRole.DeleteFailed": "Failed to Delete",
"SystemRole.GetCanCreateProjectUsersError": "Error getting user list with creation project", "SystemRole.GetCanCreateProjectUsersError": "Error getting user list with create project permission",
"SystemRole.PleaseEnterAppId": "Please enter appId", "SystemRole.PleaseEnterAppId": "Please enter appId",
"SystemRole.AppIdNotFound": "AppId:'{{appId}}'does not exist!", "SystemRole.AppIdNotFound": "AppId: '{{appId}}' does not exist!",
"SystemRole.AppInfoContent": "Application name:'{{appName}}'department:'{{departmentName}} ({{departmentId}})'person in charge:'{{ownerName}}", "SystemRole.AppInfoContent": "Application name: '{{appName}}' department: '{{departmentName}}({{departmentId}})' owner: '{{ownerName}}'",
"SystemRole.DeleteMasterAssignRoleTips": "Verify that the user who deleted AppId:'{{appId}}':'{{userId}}'assigns permissions to the application administrator?", "SystemRole.DeleteMasterAssignRoleTips": "Are you sure to disallow the user '{{userId}}' to add Master as an administrator for AppId:'{{appId}}'?",
"SystemRole.DeletedMasterAssignRoleTips": "Delete AppId:'{{appId}}'User:'{{userId}}' Allocate Application Administrator's Privileges Successfully", "SystemRole.DeletedMasterAssignRoleTips": "Disallow the user '{{userId}}' to add Master as an administrator for AppId:'{{appId}}' Successfully",
"SystemRole.AllowAppMasterAssignRoleTips": "Verify that the user who added AppId:'{{appId}}':'{{userId}}'assigns the permissions of the application administrator?", "SystemRole.AllowAppMasterAssignRoleTips": "Are you sure to allow the user '{{userId}}' to add Master as an administrator for AppId:'{{appId}}'?",
"SystemRole.AllowedAppMasterAssignRoleTips": "Users who add AppId:'{{appId}}':'{{userId}}'Allocate Application Administrator's Privileges Successfully", "SystemRole.AllowedAppMasterAssignRoleTips": "Allow the user '{{userId}}' to add Master as an administrator for AppId:'{{appId}}' Successfully",
"UserMange.Title": "user management", "UserMange.Title": "User Management",
"UserMange.TitleTips": "(Only valid for the default Spring Security simple authentication method: - Dapollo_profile = github, auth)", "UserMange.TitleTips": "(Only valid for the default Spring Security simple authentication method: - Dapollo_profile = github,auth)",
"UserMange.UserName": "User name", "UserMange.UserName": "User Name",
"UserMange.UserNameTips": "If the user name entered does not exist, create a new one. If it already exists, it is updated.", "UserMange.UserNameTips": "If the user name entered does not exist, will create a new one. If it already exists, then it will be updated.",
"UserMange.Pwd": "Password", "UserMange.Pwd": "Password",
"UserMange.Email": "mailbox", "UserMange.Email": "Email",
"UserMange.Created": "Create User Success", "UserMange.Created": "Create user successfully",
"UserMange.CreateFailed": "Failed to create user", "UserMange.CreateFailed": "Failed to create user",
"Open.Manage.Title": "Open Platform", "Open.Manage.Title": "Open Platform",
"Open.Manage.CreateThirdApp": "Creating third-party applications", "Open.Manage.CreateThirdApp": "Create third-party applications",
"Open.Manage.CreateThirdAppTips": "(Note: Third-party applications can manage configuration through Apollo Open Platform)", "Open.Manage.CreateThirdAppTips": "(Note: Third-party applications can manage configuration through Apollo Open Platform)",
"Open.Manage.ThirdAppId": "Third party application ID", "Open.Manage.ThirdAppId": "Third party appId",
"Open.Manage.ThirdAppIdTips": "(Before creating, please check if third-party applications have been applied for)", "Open.Manage.ThirdAppIdTips": "(Please check if the third-party application has already exists first)",
"Open.Manage.ThirdAppName": "Third party application name", "Open.Manage.ThirdAppName": "Third party application name",
"Open.Manage.ThirdAppNameTips": "(Suggested format xx-yy-zz example: apollo-server)", "Open.Manage.ThirdAppNameTips": "(Suggested format xx-yy-zz e.g. apollo-server)",
"Open.Manage.ProjectOwner": "Project Leader", "Open.Manage.ProjectOwner": "Owner",
"Open.Manage.Create": "Establish", "Open.Manage.Create": "Create",
"Open.Manage.GrantPermission": "Empowerment", "Open.Manage.GrantPermission": "Authorization",
"Open.Manage.GrantPermissionTips": "Namespace level permissions include modifying and publishing Namespace. Application level permissions include creating Namespace, modifying or publishing any Namespace under an application.", "Open.Manage.GrantPermissionTips": "(Namespace level permissions include edit and release namespace. Application level permissions include creating namespace, edit or release any namespace in the application.)",
"Open.Manage.Token": "Token", "Open.Manage.Token": "Token",
"Open.Manage.ManagedAppId": "Managed AppId", "Open.Manage.ManagedAppId": "Managed AppId",
"Open.Manage.ManagedNamespace": "Managed Namespace", "Open.Manage.ManagedNamespace": "Managed Namespace",
"Open.Manage.ManagedNamespaceTips": "(For namespaces of non-property types, add type suffixes, such as apollo.xml)", "Open.Manage.ManagedNamespaceTips": "(For non-properties namespaces, please add the suffix, such as apollo.xml)",
"Open.Manage.GrantType": "Authorization type", "Open.Manage.GrantType": "Authorization type",
"Open.Manage.GrantType.Namespace": "Namespace", "Open.Manage.GrantType.Namespace": "Namespace",
"Open.Manage.GrantType.App": "App", "Open.Manage.GrantType.App": "App",
"Open.Manage.GrantEnv": "Environmental Science", "Open.Manage.GrantEnv": "Environments",
"Open.Manage.GrantEnvTips": "(If you don't select, all environments have permissions. If you prompt Namespace's role does not exist, open the authorization page of the Namespace to trigger the privilege initialization action.)", "Open.Manage.GrantEnvTips": "(If you don't select any environment, then will have permissions to all environments.)",
"Open.Manage.PleaseEnterAppId": "Please enter appId", "Open.Manage.PleaseEnterAppId": "Please enter appId",
"Open.Manage.AppNotCreated": "App ('{{appId}}') was not created, please create it first", "Open.Manage.AppNotCreated": "App('{{appId}}') does not exist, please create it first",
"Open.Manage.GrantSuccessfully": "Empowerment Success", "Open.Manage.GrantSuccessfully": "Authorize Successfully",
"Open.Manage.GrantFailed": "Failure in empowerment", "Open.Manage.GrantFailed": "Failed to authorize",
"Namespace.Role.Title": "Authority Management", "Namespace.Role.Title": "Permission Management",
"Namespace.Role.GrantModifyTo": "Right to amend", "Namespace.Role.GrantModifyTo": "Permission to edit",
"Namespace.Role.GrantModifyTo2": "(Configuration can be modified)", "Namespace.Role.GrantModifyTo2": "(Can edit the configuration)",
"Namespace.Role.AllEnv": "All environments", "Namespace.Role.AllEnv": "All environments",
"Namespace.Role.GrantPubishTo": "Right to issue", "Namespace.Role.GrantPublishTo": "Permission to release",
"Namespace.Role.GrantPubishTo2": "(You can publish configurations)", "Namespace.Role.GrantPublishTo2": "(Can release the configuration)",
"Namespace.Role.Add": "Add to", "Namespace.Role.Add": "Add",
"Namespace.Role.NoPermisson": "You do not have permission yo!", "Namespace.Role.NoPermission": "You do not have permission!",
"Namespace.Role.InitNamespacePermissionError": "Error initializing authorization", "Namespace.Role.InitNamespacePermissionError": "Error initializing authorization",
"Namespace.Role.GetEnvGrantUserError": "Authorized user error loading'{{env}}'", "Namespace.Role.GetEnvGrantUserError": "Failed to load authorized users for '{{env}}'",
"Namespace.Role.GetGrantUserError": "Error loading authorized user", "Namespace.Role.GetGrantUserError": "Failed to load authorized users",
"Namespace.Role.PleaseChooseUser": "Please select the user", "Namespace.Role.PleaseChooseUser": "Please select the user",
"Namespace.Role.Added": "Added Successfully", "Namespace.Role.Added": "Add Successfully",
"Namespace.Role.AddFailed": "Failure to add", "Namespace.Role.AddFailed": "Failed to add",
"Namespace.Role.Deleted": "Successful deletion", "Namespace.Role.Deleted": "Delete Successfully",
"Namespace.Role.DeleteFailed": "Delete failed", "Namespace.Role.DeleteFailed": "Failed to Delete",
"Config.Sync.Title": "Synchronization Configuration", "Config.Sync.Title": "Synchronize Configuration",
"Config.Sync.FistStep": "(Step 1: Select Synchronization Information)", "Config.Sync.FistStep": "(Step 1: Select Synchronization Information)",
"Config.Sync.SecondStep": "(Step 2: Check Diff)", "Config.Sync.SecondStep": "(Step 2: Check Diff)",
"Config.Sync.PreviousStep": "The last step", "Config.Sync.PreviousStep": "Previous step",
"Config.Sync.NextStep": "Next step", "Config.Sync.NextStep": "Next step",
"Config.Sync.Sync": "synchronization", "Config.Sync.Sync": "Synchronize",
"Config.Sync.Tips": "Tips", "Config.Sync.Tips": "Tips",
"Config.Sync.Tips1": "Configuration between multiple environments and clusters can be maintained by synchronous configuration function", "Config.Sync.Tips1": "Configurations between multiple environments and clusters can be maintained by synchronize configuration",
"Config.Sync.Tips2": "It should be noted that the application will not take effect until it is released after synchronization.", "Config.Sync.Tips2": "It should be noted that the configurations will not take effect until they are released after synchronization.",
"Config.Sync.SyncNamespace": "Synchronized Namespace", "Config.Sync.SyncNamespace": "Synchronized Namespace",
"Config.Sync.SyncToCluster": "Synchronize to that cluster", "Config.Sync.SyncToCluster": "Synchronize to which cluster",
"Config.Sync.NeedToSyncItem": "Configuration requiring synchronization", "Config.Sync.NeedToSyncItem": "Configuration to synchronize",
"Config.Sync.SortByLastModifyTime": "Filter by last update time", "Config.Sync.SortByLastModifyTime": "Filter by last update time",
"Config.Sync.BeginTime": "start time", "Config.Sync.BeginTime": "Start time",
"Config.Sync.EndTime": "Ending time", "Config.Sync.EndTime": "End time",
"Config.Sync.Filter": "filter", "Config.Sync.Filter": "Filter",
"Config.Sync.Rest": "Reset", "Config.Sync.Rest": "Reset",
"Config.Sync.ItemKey": "Key", "Config.Sync.ItemKey": "Key",
"Config.Sync.ItemValue": "Value", "Config.Sync.ItemValue": "Value",
...@@ -580,135 +583,137 @@ ...@@ -580,135 +583,137 @@
"Config.Sync.IgnoreSync": "Ignore synchronization", "Config.Sync.IgnoreSync": "Ignore synchronization",
"Config.Sync.Step2Type": "Type", "Config.Sync.Step2Type": "Type",
"Config.Sync.Step2Key": "Key", "Config.Sync.Step2Key": "Key",
"Config.Sync.Step2SyncBefore": "Synchronization front", "Config.Sync.Step2SyncBefore": "Before Sync",
"Config.Sync.Step2SyncAfter": "After Synchronization", "Config.Sync.Step2SyncAfter": "After Sync",
"Config.Sync.Step2Comment": "Comment", "Config.Sync.Step2Comment": "Comment",
"Config.Sync.Step2Operator": "operation", "Config.Sync.Step2Operator": "Operation",
"Config.Sync.NewAdd": "Newly added", "Config.Sync.NewAdd": "Add",
"Config.Sync.NoSyncItem": "Asynchronize the configuration", "Config.Sync.NoSyncItem": "Do not synchronize the configuration",
"Config.Sync.Delete": "delete", "Config.Sync.Delete": "Delete",
"Config.Sync.Update": "To update", "Config.Sync.Update": "Update",
"Config.Sync.SyncSuccessfully": "Synchronization success!", "Config.Sync.SyncSuccessfully": "Synchronize Successfully!",
"Config.Sync.SyncFailed": "Synchronization failed!", "Config.Sync.SyncFailed": "Failed to Synchronize!",
"Config.Sync.LoadingItemsError": "Error loading configuration", "Config.Sync.LoadingItemsError": "Error loading configuration",
"Config.Sync.PleaseChooseNeedSyncItems": "Please select the configuration that needs synchronization", "Config.Sync.PleaseChooseNeedSyncItems": "Please select the configuration that needs synchronization",
"Config.Sync.PleaseChooseCluster": "Select Cluster", "Config.Sync.PleaseChooseCluster": "Select Cluster",
"Config.History.Title": "Publish History", "Config.History.Title": "Release History",
"Config.History.MasterVersionPublish": "Main version release", "Config.History.MasterVersionPublish": "Main version release",
"Config.History.MasterVersionRollback": "Main version rollback", "Config.History.MasterVersionRollback": "Main version rollback",
"Config.History.GrayscaleOperator": "Grayscale operation", "Config.History.GrayscaleOperator": "Grayscale operation",
"Config.History.PublishHistory": "Publish History", "Config.History.PublishHistory": "Release History",
"Config.History.OperationType0": "General release", "Config.History.OperationType0": "Normal release",
"Config.History.OperationType1": "Rollback", "Config.History.OperationType1": "Rollback",
"Config.History.OperationType2": "Grayscale Publishing", "Config.History.OperationType2": "Grayscale Release",
"Config.History.OperationType3": "Updating gray rules", "Config.History.OperationType3": "Update Gray Rules",
"Config.History.OperationType4": "Full gray level Publishing", "Config.History.OperationType4": "Full Grayscale Release",
"Config.History.OperationType5": "Grayscale Publishing (Main Version Publishing)", "Config.History.OperationType5": "Grayscale Release(Main Version Release)",
"Config.History.OperationType6": "Grayscale publishing (main version rollback)", "Config.History.OperationType6": "Grayscale Release(Main Version Rollback)",
"Config.History.OperationType7": "Abandon grayscale", "Config.History.OperationType7": "Abandon Grayscale",
"Config.History.OperationType8": "Delete grayscale (full release)", "Config.History.OperationType8": "Delete Grayscale(Full Release)",
"Config.History.UrgentPublish": "Emergency release", "Config.History.UrgentPublish": "Emergency Release",
"Config.History.LoadingMore": "Load more", "Config.History.LoadMore": "Load more",
"Config.History.ChangedItem": "Changed configuration", "Config.History.ChangedItem": "Changed Configuration",
"Config.History.AllItem": "Full configuration", "Config.History.ChangedItemTips": "View changes between this release and the previous release",
"Config.History.AllItem": "Full Configuration",
"Config.History.AllItemTips": "View all configurations for this release",
"Config.History.ChangeType": "Type", "Config.History.ChangeType": "Type",
"Config.History.ChangeKey": "Key", "Config.History.ChangeKey": "Key",
"Config.History.ChangeValue": "Value", "Config.History.ChangeValue": "Value",
"Config.History.ChangeOldValue": "Old Value", "Config.History.ChangeOldValue": "Old Value",
"Config.History.ChangeNewValue": "New Value", "Config.History.ChangeNewValue": "New Value",
"Config.History.ChangeTypeNew": "Newly added", "Config.History.ChangeTypeNew": "Add",
"Config.History.ChangeTypeModify": "modify", "Config.History.ChangeTypeModify": "Update",
"Config.History.ChangeTypeDelete": "delete", "Config.History.ChangeTypeDelete": "Delete",
"Config.History.NoChange": "No configuration changes", "Config.History.NoChange": "No configuration changes",
"Config.History.NoItem": "No configuration", "Config.History.NoItem": "No configuration",
"Config.History.GrayscaleRule": "Grayscale rule", "Config.History.GrayscaleRule": "Grayscale Rule",
"Config.History.GrayscaleAppId": "Grayscale AppId", "Config.History.GrayscaleAppId": "Grayscale AppId",
"Config.History.GrayscaleIp": "Grayscale IP", "Config.History.GrayscaleIp": "Grayscale IP",
"Config.History.NoGrayscaleRule": "Grayless rule", "Config.History.NoGrayscaleRule": "No Grayscale Rule",
"Config.History.NoPermissonTips": "You are not the administrator of the project, and you do not have editing or publishing rights for the Namespace. You cannot view the publishing history.", "Config.History.NoPermissionTips": "You are not this project's administrator, nor you have edit or release permission for the namespace. Thus you cannot view the release history.",
"Config.History.NoPublishHistory": "No release of historical information", "Config.History.NoPublishHistory": "No release history",
"Config.History.LoadingHistoryError": "No release of historical information", "Config.History.LoadingHistoryError": "No release history",
"Config.Diff.Title": "Comparative configuration", "Config.Diff.Title": "Compare Configuration",
"Config.Diff.FirstStep": "(Step 1: Select comparative information)", "Config.Diff.FirstStep": "(Step 1: Select what to compare)",
"Config.Diff.SecondStep": "(Step 2: View the differential configuration)", "Config.Diff.SecondStep": "(Step 2: View the differences)",
"Config.Diff.PreviousStep": "The last step", "Config.Diff.PreviousStep": "Previous step",
"Config.Diff.NextStep": "Next step", "Config.Diff.NextStep": "Next step",
"Config.Diff.TipsTitle": "Tips", "Config.Diff.TipsTitle": "Tips",
"Config.Diff.Tips": "By comparing configuration functions, you can see configuration differences between multiple environments and clusters", "Config.Diff.Tips": "By comparing configuration, you can see configuration differences between multiple environments and clusters",
"Config.Diff.DiffCluster": "Clusters to be compared", "Config.Diff.DiffCluster": "Clusters to be compared",
"Config.Diff.HasDiffComment": "Compare notes or not", "Config.Diff.HasDiffComment": "Whether to compare comments or not",
"Config.Diff.PleaseChooseTwoCluster": "Please select at least two clusters", "Config.Diff.PleaseChooseTwoCluster": "Please select at least two clusters",
"App.CreateProject": "Create a project", "App.CreateProject": "Create Project",
"App.AppIdTips": "(Apply unique identifiers)", "App.AppIdTips": "(Application's unique identifiers)",
"App.AppNameTips": "(建议格式 xx-yy-zz 例:apollo-server)", "App.AppNameTips": "(Suggested format xx-yy-zz e.g. apollo-server)",
"App.AppOwnerTips": "(After enabling the application administrator allocation restrictions, the application manager and project administrator default to this account, not optional)", "App.AppOwnerTips": "(After enabling the application administrator allocation restrictions, the application owner and project administrator are default to current account, not subject to change)",
"App.AppAdminTips1": "(The application manager defaults to project administrator privileges.", "App.AppAdminTips1": "(The application owner has project administrator permission by default.",
"App.AppAdminTips2": "Project administrators can create Namespace, cluster, and assign user privileges)", "App.AppAdminTips2": "Project administrators can create namespace, cluster, and assign user permissions)",
"App.Setting.Title": "project management", "App.Setting.Title": "Manage Project",
"App.Setting.Admin": "Administrators", "App.Setting.Admin": "Administrators",
"App.Setting.AdminTips": "(Project administrators have the following permissions: 1. Create Namespace 2. Create clusters 3. Manage projects, Namespace permissions)", "App.Setting.AdminTips": "(Project administrators have the following permissions: 1. Create namespace 2. Create clusters 3. Manage project and namespace permissions)",
"App.Setting.Add": "Add to", "App.Setting.Add": "Add",
"App.Setting.BasicInfo": "Essential information", "App.Setting.BasicInfo": "Basic information",
"App.Setting.ProjectName": "entry name", "App.Setting.ProjectName": "App Name",
"App.Setting.ProjectNameTips": "(Suggested format xx-yy-zz example: apollo-server)", "App.Setting.ProjectNameTips": "(Suggested format xx-yy-zz e.g. apollo-server)",
"App.Setting.ProjectOwner": "Project Leader", "App.Setting.ProjectOwner": "Owner",
"App.Setting.Modify": "Modify project information", "App.Setting.Modify": "Modify project information",
"App.Setting.Cancel": "Cancel modification", "App.Setting.Cancel": "Cancel",
"App.Setting.NoPermissonTips": "You do not have permission to operate, please find [{{users}}] open permission", "App.Setting.NoPermissionTips": "You do not have permission to operate, please ask [{{users}}] to authorize",
"App.Setting.DeleteAdmin": "Delete Administrator", "App.Setting.DeleteAdmin": "Delete Administrator",
"App.Setting.CanNotDeleteAllAdmin": "Cannot delete all administrators", "App.Setting.CanNotDeleteAllAdmin": "Cannot delete all administrators",
"App.Setting.PleaseChooseUser": "Please select the user", "App.Setting.PleaseChooseUser": "Please select a user",
"App.Setting.Added": "Added Successfully", "App.Setting.Added": "Add Successfully",
"App.Setting.AddFailed": "添加失败", "App.Setting.AddFailed": "Failed to Add",
"App.Setting.Deleted": "删除成功", "App.Setting.Deleted": "Delete Successfully",
"App.Setting.DeleteFailed": "Delete failed", "App.Setting.DeleteFailed": "Failed to Delete",
"App.Setting.Modifed": "Successful revision", "App.Setting.Modified": "Update Successfully",
"Valdr.App.AppId.Size": "AppId cannot be longer than 32 characters", "Valdr.App.AppId.Size": "AppId cannot be longer than 32 characters",
"Valdr.App.AppId.Required": "AppId cannot be empty", "Valdr.App.AppId.Required": "AppId cannot be empty",
"Valdr.App.appName.Size": "The application name cannot be longer than 128 characters", "Valdr.App.appName.Size": "The app name cannot be longer than 128 characters",
"Valdr.App.appName.Required": "Application name cannot be empty", "Valdr.App.appName.Required": "App name cannot be empty",
"Valdr.Cluster.ClusterName.Size": "Cluster names cannot be longer than 32 characters", "Valdr.Cluster.ClusterName.Size": "Cluster names cannot be longer than 32 characters",
"Valdr.Cluster.ClusterName.Required": "Cluster name cannot be empty", "Valdr.Cluster.ClusterName.Required": "Cluster name cannot be empty",
"Valdr.AppNamespace.NamespaceName.Size": "Namespace name cannot be longer than 100 characters", "Valdr.AppNamespace.NamespaceName.Size": "Namespace name cannot be longer than 32 characters",
"Valdr.AppNamespace.NamespaceName.Required": "Namespace name cannot be empty", "Valdr.AppNamespace.NamespaceName.Required": "Namespace name cannot be empty",
"Valdr.AppNamespace.Comment.Size": "Note length should not exceed 64 characters", "Valdr.AppNamespace.Comment.Size": "Comment length should not exceed 64 characters",
"Valdr.Item.Key.Size": "Key cannot be longer than 128 characters", "Valdr.Item.Key.Size": "Key cannot be longer than 128 characters",
"Valdr.Item.Key.Required": "Key can't be empty", "Valdr.Item.Key.Required": "Key can't be empty",
"Valdr.Item.Comment.Size": "Note length should not exceed 64 characters", "Valdr.Item.Comment.Size": "Comment length should not exceed 64 characters",
"Valdr.Release.ReleaseName.Size": "Release Name cannot be longer than 64 characters", "Valdr.Release.ReleaseName.Size": "Release Name cannot be longer than 64 characters",
"Valdr.Release.ReleaseName.Required": "Release Name cannot be empty", "Valdr.Release.ReleaseName.Required": "Release Name cannot be empty",
"Valdr.Release.Comment.Size": "Note length should not exceed 64 characters", "Valdr.Release.Comment.Size": "Comment length should not exceed 64 characters",
"ApolloConfirmDialog.DefaultConfirmBtnName": "confirm", "ApolloConfirmDialog.DefaultConfirmBtnName": "OK",
"ApolloConfirmDialog.SearchPlaceHolder": "Search items (AppId, project name)", "ApolloConfirmDialog.SearchPlaceHolder": "Search items (App Id, App Name)",
"RulesModal.ChooseInstances": "Select from the list of instances", "RulesModal.ChooseInstances": "Select from the list of instances",
"RulesModal.InvalidIp": "Illegal IP Address:'{{ip}}'", "RulesModal.InvalidIp": "Illegal IP Address: '{{ip}}'",
"RulesModal.GrayscaleAppIdCanNotBeNull": "Grayscale AppId cannot be empty", "RulesModal.GrayscaleAppIdCanNotBeNull": "Grayscale AppId cannot be empty",
"RulesModal.AppIdExistsRule": "There are already rules for AppId='{{appId}}'", "RulesModal.AppIdExistsRule": "Rules already exist for AppId='{{appId}}'",
"RulesModal.IpListCanNotBeNull": "IP list cannot be empty", "RulesModal.IpListCanNotBeNull": "IP list cannot be empty",
"ItemModal.KeyExists": "Key='{{key}}' already exists", "ItemModal.KeyExists": "Key='{{key}}' already exists",
"ItemModal.AddedTips": "Successful addition. Publish if necessary", "ItemModal.AddedTips": "Add Successfully. need to release configuration to take effect",
"ItemModal.AddFailed": "Failure to add", "ItemModal.AddFailed": "Failed to Add",
"ItemModal.PleaseChooseCluster": "Select Cluster", "ItemModal.PleaseChooseCluster": "Please Select Cluster",
"ItemModal.ModifedTips": "Successful update, if necessary, please publish", "ItemModal.ModifiedTips": "Update Successfully. need to release configuration to take effect",
"ItemModal.ModifyFailed": "Update failed", "ItemModal.ModifyFailed": "Failed to Update",
"ItemModal.Tabs": "Tab character", "ItemModal.Tabs": "Tab character",
"ItemModal.NewLine": "Newline character", "ItemModal.NewLine": "Newline character",
"ItemModal.Space": "Blank space", "ItemModal.Space": "Blank space",
"ApolloNsPanel.LoadingHistoryError": "Error loading and modifying history", "ApolloNsPanel.LoadingHistoryError": "Failed to load change history",
"ApolloNsPanel.LoadingGrayscaleError": "Error loading and modifying history", "ApolloNsPanel.LoadingGrayscaleError": "Failed to load change history",
"ApolloNsPanel.Deleted": "Successful deletion", "ApolloNsPanel.Deleted": "Delete Successfully",
"ApolloNsPanel.GrayscaleModifed": "Successful updating of gray rules", "ApolloNsPanel.GrayscaleModified": "Update grayscale rules successfully",
"ApolloNsPanel.GrayscaleModifyFailed": "Failure to update gray rules", "ApolloNsPanel.GrayscaleModifyFailed": "Failed to update grayscale rules",
"ApolloNsPanel.ModifedTips": "Updates are successful. Publish them to take effect", "ApolloNsPanel.ModifiedTips": "Update Successfully. need to release configuration to take effect",
"ApolloNsPanel.ModifyFailed": "Update failed", "ApolloNsPanel.ModifyFailed": "Failed to Update",
"ApolloNsPanel.GrammarIsright": "Grammar is correct", "ApolloNsPanel.GrammarIsright": "Syntax is correct",
"ReleaseModal.Published": "Publish suceesssful", "ReleaseModal.Published": "Release Successfully",
"ReleaseModal.PublishFailed": "Publish failed", "ReleaseModal.PublishFailed": "Failed to Release",
"ReleaseModal.GrayscalePublished": "Successful Grayscale Release", "ReleaseModal.GrayscalePublished": "Grayscale Release Successfully",
"ReleaseModal.GrayscalePublishFailed": "Grayscale publish failed", "ReleaseModal.GrayscalePublishFailed": "Failed to Grayscale Release",
"ReleaseModal.AllPublished": "Full publish successful", "ReleaseModal.AllPublished": "Full Release Successfully",
"ReleaseModal.AllPublishFailed": "Full publish failed", "ReleaseModal.AllPublishFailed": "Failed to Full Release",
"Rollback.NoRollbackList": "No published history to rollback", "Rollback.NoRollbackList": "No released history to rollback",
"Rollback.RollbackSuccessfully": "Rollback successful", "Rollback.RollbackSuccessfully": "Rollback Successfully",
"Rollback.RollbackFailed": "Rollback failed" "Rollback.RollbackFailed": "Failed to Rollback"
} }
\ No newline at end of file
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
"Common.AppId": "AppId", "Common.AppId": "AppId",
"Common.Namespace": "Namespace", "Common.Namespace": "Namespace",
"Common.AppName": "应用名称", "Common.AppName": "应用名称",
"Common.AppOwner": "应用负责人", "Common.AppOwner": "负责人",
"Common.AppOwnerLong": "应用负责人",
"Common.AppAdmin": "项目管理员", "Common.AppAdmin": "项目管理员",
"Common.ClusterName": "集群名称", "Common.ClusterName": "集群名称",
"Common.Submit": "提交", "Common.Submit": "提交",
...@@ -34,9 +35,9 @@ ...@@ -34,9 +35,9 @@
"Common.Ok": "确定", "Common.Ok": "确定",
"Common.Search": "查询", "Common.Search": "查询",
"Common.IsRootUser": "当前页面只对Apollo管理员开放", "Common.IsRootUser": "当前页面只对Apollo管理员开放",
"Common.PelaseChooseDepartment": "请选择部门", "Common.PleaseChooseDepartment": "请选择部门",
"Common.PelaseChooseOwner": "请选择应用负责人", "Common.PleaseChooseOwner": "请选择应用负责人",
"Common.LoginExprieTips": "您的登录信息已过期,请刷新页面后重试", "Common.LoginExpiredTips": "您的登录信息已过期,请刷新页面后重试",
"Component.DeleteNamespace.Title": "删除Namespace", "Component.DeleteNamespace.Title": "删除Namespace",
"Component.DeleteNamespace.PublicContent": "删除Namespace将导致实例获取不到此Namespace的配置,确定要删除吗?", "Component.DeleteNamespace.PublicContent": "删除Namespace将导致实例获取不到此Namespace的配置,确定要删除吗?",
"Component.DeleteNamespace.PrivateContent": "删除私有Namespace将导致实例获取不到此Namespace的配置,且页面会提示缺失Namespace(除非使用管理员工具删除AppNamespace),确定要删除吗?", "Component.DeleteNamespace.PrivateContent": "删除私有Namespace将导致实例获取不到此Namespace的配置,且页面会提示缺失Namespace(除非使用管理员工具删除AppNamespace),确定要删除吗?",
...@@ -98,8 +99,8 @@ ...@@ -98,8 +99,8 @@
"Component.Namespace.Branch.Body.ClickToSee": "点击查看", "Component.Namespace.Branch.Body.ClickToSee": "点击查看",
"Component.Namespace.Branch.Body.DeletedItem": "删除的配置", "Component.Namespace.Branch.Body.DeletedItem": "删除的配置",
"Component.Namespace.Branch.Body.Delete": "删", "Component.Namespace.Branch.Body.Delete": "删",
"Component.Namespace.Branch.Body.ChangedFormMaster": "修改主版本的配置", "Component.Namespace.Branch.Body.ChangedFromMaster": "修改主版本的配置",
"Component.Namespace.Branch.Body.ModifedItem": "修改的配置", "Component.Namespace.Branch.Body.ModifiedItem": "修改的配置",
"Component.Namespace.Branch.Body.Modify": "改", "Component.Namespace.Branch.Body.Modify": "改",
"Component.Namespace.Branch.Body.AddedByGrayscale": "灰度版本特有的配置", "Component.Namespace.Branch.Body.AddedByGrayscale": "灰度版本特有的配置",
"Component.Namespace.Branch.Body.Added": "新", "Component.Namespace.Branch.Body.Added": "新",
...@@ -119,7 +120,7 @@ ...@@ -119,7 +120,7 @@
"Component.Namespace.MasterBranch.Body.ItemPublished": "已发布", "Component.Namespace.MasterBranch.Body.ItemPublished": "已发布",
"Component.Namespace.MasterBranch.Body.AddedItem": "新增的配置", "Component.Namespace.MasterBranch.Body.AddedItem": "新增的配置",
"Component.Namespace.MasterBranch.Body.ModifyItem": "修改此灰度配置", "Component.Namespace.MasterBranch.Body.ModifyItem": "修改此灰度配置",
"Component.Namespace.Branch.GrayScaleRule.NoPermissonTips": "您没有权限编辑灰度规则, 具有namespace修改权或者发布权的人员才可以编辑灰度规则. 如需要编辑灰度规则,请找项目管理员申请权限.", "Component.Namespace.Branch.GrayScaleRule.NoPermissionTips": "您没有权限编辑灰度规则, 具有namespace修改权或者发布权的人员才可以编辑灰度规则. 如需要编辑灰度规则,请找项目管理员申请权限.",
"Component.Namespace.Branch.GrayScaleRule.AppId": "灰度的AppId", "Component.Namespace.Branch.GrayScaleRule.AppId": "灰度的AppId",
"Component.Namespace.Branch.GrayScaleRule.IpList": "灰度的IP列表", "Component.Namespace.Branch.GrayScaleRule.IpList": "灰度的IP列表",
"Component.Namespace.Branch.GrayScaleRule.Operator": "操作", "Component.Namespace.Branch.GrayScaleRule.Operator": "操作",
...@@ -134,7 +135,7 @@ ...@@ -134,7 +135,7 @@
"Component.Namespace.Branch.Instance.InstanceDataCenter": "Data Center", "Component.Namespace.Branch.Instance.InstanceDataCenter": "Data Center",
"Component.Namespace.Branch.Instance.InstanceIp": "IP", "Component.Namespace.Branch.Instance.InstanceIp": "IP",
"Component.Namespace.Branch.Instance.InstanceGetItemTime": "配置获取时间", "Component.Namespace.Branch.Instance.InstanceGetItemTime": "配置获取时间",
"Component.Namespace.Branch.Instance.LoadingMore": "刷新列表", "Component.Namespace.Branch.Instance.LoadMore": "刷新列表",
"Component.Namespace.Branch.Instance.NoInstance": "无实例信息", "Component.Namespace.Branch.Instance.NoInstance": "无实例信息",
"Component.Namespace.Branch.History.ItemType": "Type", "Component.Namespace.Branch.History.ItemType": "Type",
"Component.Namespace.Branch.History.ItemKey": "Key", "Component.Namespace.Branch.History.ItemKey": "Key",
...@@ -142,9 +143,9 @@ ...@@ -142,9 +143,9 @@
"Component.Namespace.Branch.History.ItemNewValue": "New Value", "Component.Namespace.Branch.History.ItemNewValue": "New Value",
"Component.Namespace.Branch.History.ItemComment": "Comment", "Component.Namespace.Branch.History.ItemComment": "Comment",
"Component.Namespace.Branch.History.NewAdded": "新增", "Component.Namespace.Branch.History.NewAdded": "新增",
"Component.Namespace.Branch.History.Modifed": "更新", "Component.Namespace.Branch.History.Modified": "更新",
"Component.Namespace.Branch.History.Deleted": "删除", "Component.Namespace.Branch.History.Deleted": "删除",
"Component.Namespace.Branch.History.LoadingMore": "加载更多", "Component.Namespace.Branch.History.LoadMore": "加载更多",
"Component.Namespace.Branch.History.NoHistory": "无更改历史", "Component.Namespace.Branch.History.NoHistory": "无更改历史",
"Component.Namespace.Header.Title.Private": "私有", "Component.Namespace.Header.Title.Private": "私有",
"Component.Namespace.Header.Title.PrivateTips": "私有namespace({{namespace.baseInfo.namespaceName}})的配置只能被AppId为{{appId}}的客户端读取到", "Component.Namespace.Header.Title.PrivateTips": "私有namespace({{namespace.baseInfo.namespaceName}})的配置只能被AppId为{{appId}}的客户端读取到",
...@@ -159,12 +160,12 @@ ...@@ -159,12 +160,12 @@
"Component.Namespace.Master.LoadNamespaceTips": "加载Namespace", "Component.Namespace.Master.LoadNamespaceTips": "加载Namespace",
"Component.Namespace.Master.Items.Changed": "有修改", "Component.Namespace.Master.Items.Changed": "有修改",
"Component.Namespace.Master.Items.ChangedUser": "当前修改者", "Component.Namespace.Master.Items.ChangedUser": "当前修改者",
"Component.Namespace.Master.Items.Pubish": "发布", "Component.Namespace.Master.Items.Publish": "发布",
"Component.Namespace.Master.Items.PubishTips": "发布配置", "Component.Namespace.Master.Items.PublishTips": "发布配置",
"Component.Namespace.Master.Items.Rollback": "回滚", "Component.Namespace.Master.Items.Rollback": "回滚",
"Component.Namespace.Master.Items.RollbackTips": "回滚已发布配置", "Component.Namespace.Master.Items.RollbackTips": "回滚已发布配置",
"Component.Namespace.Master.Items.PubishHistory": "发布历史", "Component.Namespace.Master.Items.PublishHistory": "发布历史",
"Component.Namespace.Master.Items.PubishHistoryTips": "查看发布历史", "Component.Namespace.Master.Items.PublishHistoryTips": "查看发布历史",
"Component.Namespace.Master.Items.Grant": "授权", "Component.Namespace.Master.Items.Grant": "授权",
"Component.Namespace.Master.Items.GrantTips": "配置修改、发布权限", "Component.Namespace.Master.Items.GrantTips": "配置修改、发布权限",
"Component.Namespace.Master.Items.Grayscale": "灰度", "Component.Namespace.Master.Items.Grayscale": "灰度",
...@@ -209,8 +210,8 @@ ...@@ -209,8 +210,8 @@
"Component.Namespace.Master.Items.Body.HaveGrayscale": "该配置有灰度配置,点击查看灰度的值", "Component.Namespace.Master.Items.Body.HaveGrayscale": "该配置有灰度配置,点击查看灰度的值",
"Component.Namespace.Master.Items.Body.NewAdded": "新", "Component.Namespace.Master.Items.Body.NewAdded": "新",
"Component.Namespace.Master.Items.Body.NewAddedTips": "新增的配置", "Component.Namespace.Master.Items.Body.NewAddedTips": "新增的配置",
"Component.Namespace.Master.Items.Body.Modifed": "改", "Component.Namespace.Master.Items.Body.Modified": "改",
"Component.Namespace.Master.Items.Body.ModifedTips": "修改的配置", "Component.Namespace.Master.Items.Body.ModifiedTips": "修改的配置",
"Component.Namespace.Master.Items.Body.Deleted": "删", "Component.Namespace.Master.Items.Body.Deleted": "删",
"Component.Namespace.Master.Items.Body.DeletedTips": "删除的配置", "Component.Namespace.Master.Items.Body.DeletedTips": "删除的配置",
"Component.Namespace.Master.Items.Body.ModifyTips": "修改", "Component.Namespace.Master.Items.Body.ModifyTips": "修改",
...@@ -223,7 +224,7 @@ ...@@ -223,7 +224,7 @@
"Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips1": "当前公共namespace的所有者", "Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips1": "当前公共namespace的所有者",
"Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips2": "没有关联此namespace,请联系{{namespace.parentAppId}}的所有者在{{namespace.parentAppId}}项目里关联此namespace", "Component.Namespace.Master.Items.Body.Public.NoPublicNamespaceTips2": "没有关联此namespace,请联系{{namespace.parentAppId}}的所有者在{{namespace.parentAppId}}项目里关联此namespace",
"Component.Namespace.Master.Items.Body.Public.NoPublished": "无发布的配置", "Component.Namespace.Master.Items.Body.Public.NoPublished": "无发布的配置",
"Component.Namespace.Master.Items.Body.Public.PubishedAndCover": "覆盖此配置", "Component.Namespace.Master.Items.Body.Public.PublishedAndCover": "覆盖此配置",
"Component.Namespace.Master.Items.Body.NoPublished.Title": "无公共的配置", "Component.Namespace.Master.Items.Body.NoPublished.Title": "无公共的配置",
"Component.Namespace.Master.Items.Body.NoPublished.PublishedValue": "已发布的值", "Component.Namespace.Master.Items.Body.NoPublished.PublishedValue": "已发布的值",
"Component.Namespace.Master.Items.Body.NoPublished.NoPublishedValue": "未发布的值", "Component.Namespace.Master.Items.Body.NoPublished.NoPublishedValue": "未发布的值",
...@@ -235,7 +236,7 @@ ...@@ -235,7 +236,7 @@
"Component.Namespace.Master.Items.Body.HistoryView.NewAdded": "新增", "Component.Namespace.Master.Items.Body.HistoryView.NewAdded": "新增",
"Component.Namespace.Master.Items.Body.HistoryView.Updated": "更新", "Component.Namespace.Master.Items.Body.HistoryView.Updated": "更新",
"Component.Namespace.Master.Items.Body.HistoryView.Deleted": "删除", "Component.Namespace.Master.Items.Body.HistoryView.Deleted": "删除",
"Component.Namespace.Master.Items.Body.HistoryView.LoadingMore": "加载更多", "Component.Namespace.Master.Items.Body.HistoryView.LoadMore": "加载更多",
"Component.Namespace.Master.Items.Body.HistoryView.NoHistory": "无更改历史", "Component.Namespace.Master.Items.Body.HistoryView.NoHistory": "无更改历史",
"Component.Namespace.Master.Items.Body.Instance.Tips": "实例说明:只展示最近一天访问过Apollo的实例", "Component.Namespace.Master.Items.Body.Instance.Tips": "实例说明:只展示最近一天访问过Apollo的实例",
"Component.Namespace.Master.Items.Body.Instance.UsedNewItem": "使用最新配置的实例", "Component.Namespace.Master.Items.Body.Instance.UsedNewItem": "使用最新配置的实例",
...@@ -243,7 +244,7 @@ ...@@ -243,7 +244,7 @@
"Component.Namespace.Master.Items.Body.Instance.AllInstance": "所有实例", "Component.Namespace.Master.Items.Body.Instance.AllInstance": "所有实例",
"Component.Namespace.Master.Items.Body.Instance.RefreshList": "刷新列表", "Component.Namespace.Master.Items.Body.Instance.RefreshList": "刷新列表",
"Component.Namespace.Master.Items.Body.Instance.ToSeeItem": "查看配置", "Component.Namespace.Master.Items.Body.Instance.ToSeeItem": "查看配置",
"Component.Namespace.Master.Items.Body.Instance.LoadingMore": "加载更多", "Component.Namespace.Master.Items.Body.Instance.LoadMore": "加载更多",
"Component.Namespace.Master.Items.Body.Instance.ItemAppId": "App ID", "Component.Namespace.Master.Items.Body.Instance.ItemAppId": "App ID",
"Component.Namespace.Master.Items.Body.Instance.ItemCluster": "Cluster Name", "Component.Namespace.Master.Items.Body.Instance.ItemCluster": "Cluster Name",
"Component.Namespace.Master.Items.Body.Instance.ItemDataCenter": "Data Center", "Component.Namespace.Master.Items.Body.Instance.ItemDataCenter": "Data Center",
...@@ -252,7 +253,7 @@ ...@@ -252,7 +253,7 @@
"Component.Namespace.Master.Items.Body.Instance.NoInstanceTips": "无实例信息", "Component.Namespace.Master.Items.Body.Instance.NoInstanceTips": "无实例信息",
"Component.PublishDeny.Title": "发布受限", "Component.PublishDeny.Title": "发布受限",
"Component.PublishDeny.Tips1": "您不能发布哟~{{env}}环境配置的编辑和发布必须为不同的人,请找另一个具有当前namespace发布权的人操作发布~", "Component.PublishDeny.Tips1": "您不能发布哟~{{env}}环境配置的编辑和发布必须为不同的人,请找另一个具有当前namespace发布权的人操作发布~",
"Component.PublishDeny.Tips2": "(如果是非工作时间或者特殊情况,您可以通过点击<mark>紧急发布</mark>按钮进行发布)", "Component.PublishDeny.Tips2": "(如果是非工作时间或者特殊情况,您可以通过点击'紧急发布'按钮进行发布)",
"Component.PublishDeny.EmergencyPublish": "紧急发布", "Component.PublishDeny.EmergencyPublish": "紧急发布",
"Component.PublishDeny.Close": "关闭", "Component.PublishDeny.Close": "关闭",
"Component.Publish.Title": "发布", "Component.Publish.Title": "发布",
...@@ -270,8 +271,8 @@ ...@@ -270,8 +271,8 @@
"Component.Publish.ModifyTime": "修改时间", "Component.Publish.ModifyTime": "修改时间",
"Component.Publish.NewAdded": "新", "Component.Publish.NewAdded": "新",
"Component.Publish.NewAddedTips": "新增的配置", "Component.Publish.NewAddedTips": "新增的配置",
"Component.Publish.Modifed": "改", "Component.Publish.Modified": "改",
"Component.Publish.ModifedTips": "修改的配置", "Component.Publish.ModifiedTips": "修改的配置",
"Component.Publish.Deleted": "删", "Component.Publish.Deleted": "删",
"Component.Publish.DeletedTips": "删除的配置", "Component.Publish.DeletedTips": "删除的配置",
"Component.Publish.MasterValue": "主版本值", "Component.Publish.MasterValue": "主版本值",
...@@ -284,14 +285,15 @@ ...@@ -284,14 +285,15 @@
"Component.Publish.Release": "Release Name", "Component.Publish.Release": "Release Name",
"Component.Publish.ReleaseComment": "Comment", "Component.Publish.ReleaseComment": "Comment",
"Component.Publish.OpPublish": "发布", "Component.Publish.OpPublish": "发布",
"Component.Rollback.Goto": "回滚到", "Component.Rollback.To": "回滚到",
"Component.Rollback.Tips": "此操作将会回滚到上一个发布版本,且当前版本作废,但不影响正在修改的配置。可在发布历史页面查看当前生效的版本", "Component.Rollback.Tips": "此操作将会回滚到上一个发布版本,且当前版本作废,但不影响正在修改的配置。可在发布历史页面查看当前生效的版本",
"Component.Rollback.ClickToView": "点击查看",
"Component.Rollback.ItemType": "Type", "Component.Rollback.ItemType": "Type",
"Component.Rollback.ItemKey": "Key", "Component.Rollback.ItemKey": "Key",
"Component.Rollback.RollbackBeforeValue": "回滚前", "Component.Rollback.RollbackBeforeValue": "回滚前",
"Component.Rollback.RollbackAfterValue": "回滚后", "Component.Rollback.RollbackAfterValue": "回滚后",
"Component.Rollback.Added": "新增", "Component.Rollback.Added": "新增",
"Component.Rollback.Modifed": "更新", "Component.Rollback.Modified": "更新",
"Component.Rollback.Deleted": "删除", "Component.Rollback.Deleted": "删除",
"Component.Rollback.NoChange": "配置没有变化", "Component.Rollback.NoChange": "配置没有变化",
"Component.Rollback.OpRollback": "回滚", "Component.Rollback.OpRollback": "回滚",
...@@ -301,19 +303,20 @@ ...@@ -301,19 +303,20 @@
"Login.LogoutSuccessfully": "登出成功", "Login.LogoutSuccessfully": "登出成功",
"Index.MyProject": "我的项目", "Index.MyProject": "我的项目",
"Index.CreateProject": "创建项目", "Index.CreateProject": "创建项目",
"Index.LoadingMore": "加载更多", "Index.LoadMore": "加载更多",
"Index.FavoriteItems": "收藏的项目", "Index.FavoriteItems": "收藏的项目",
"Index.Topping": "置顶", "Index.Topping": "置顶",
"Index.FavoriteTip": "您还没有收藏过任何项目,在项目主页可以收藏项目哟~", "Index.FavoriteTip": "您还没有收藏过任何项目,在项目主页可以收藏项目哟~",
"Index.RecentyViewedItems": "最近浏览的项目", "Index.RecentlyViewedItems": "最近浏览的项目",
"Index.GetCreateAppRoleFailed": "获取创建应用权限信息失败", "Index.GetCreateAppRoleFailed": "获取创建应用权限信息失败",
"Index.Topped": "置顶成功", "Index.Topped": "置顶成功",
"Index.CancelledFavorite": "取消收藏成功", "Index.CancelledFavorite": "取消收藏成功",
"Cluster.CreateCluster": "新建集群",
"Cluster.Tips.1": "通过添加集群,可以使同一份程序在不同的集群(如不同的数据中心)使用不同的配置", "Cluster.Tips.1": "通过添加集群,可以使同一份程序在不同的集群(如不同的数据中心)使用不同的配置",
"Cluster.Tips.2": "如果不同集群使用一样的配置,则没有必要创建集群", "Cluster.Tips.2": "如果不同集群使用一样的配置,则没有必要创建集群",
"Cluster.Tips.3": "Apollo默认会读取机器上/opt/settings/server.properties(linux)或C:\\opt\\settings\\server.properties(windows)文件中的idc属性作为集群名字, 如SHAJQ(金桥数据中心)、SHAOY(欧阳数据中心)", "Cluster.Tips.3": "Apollo默认会读取机器上/opt/settings/server.properties(linux)或C:\\opt\\settings\\server.properties(windows)文件中的idc属性作为集群名字, 如SHAJQ(金桥数据中心)、SHAOY(欧阳数据中心)",
"Cluster.Tips.4": "在这里创建的集群名字需要和机器上server.properties中的idc属性一致", "Cluster.Tips.4": "在这里创建的集群名字需要和机器上server.properties中的idc属性一致",
"Cluster.CreaterNameTips": "(部署集群如:SHAJQ,SHAOY 或自定义集群如:SHAJQ-xx,SHAJQ-yy)", "Cluster.CreateNameTips": "(部署集群如:SHAJQ,SHAOY 或自定义集群如:SHAJQ-xx,SHAJQ-yy)",
"Cluster.ChooseEnvironment": "选择环境", "Cluster.ChooseEnvironment": "选择环境",
"Cluster.LoadingEnvironmentError": "加载环境信息出错", "Cluster.LoadingEnvironmentError": "加载环境信息出错",
"Cluster.ClusterCreated": "集群创建成功", "Cluster.ClusterCreated": "集群创建成功",
...@@ -338,7 +341,7 @@ ...@@ -338,7 +341,7 @@
"Config.CurrentlyOperatorEnv": "当前操作环境", "Config.CurrentlyOperatorEnv": "当前操作环境",
"Config.DoNotRemindAgain": "不再提示", "Config.DoNotRemindAgain": "不再提示",
"Config.Note": "注意", "Config.Note": "注意",
"Config.ClusterIsDefualtTipContent": "所有不属于 '{{name}}' 集群的实例会使用default集群(当前页面)的配置,属于 '{{name}}' 的实例会使用对应集群的配置!", "Config.ClusterIsDefaultTipContent": "所有不属于 '{{name}}' 集群的实例会使用default集群(当前页面)的配置,属于 '{{name}}' 的实例会使用对应集群的配置!",
"Config.ClusterIsCustomTipContent": "属于 '{{name}}' 集群的实例只会使用 '{{name}}' 集群(当前页面)的配置,只有当对应namespace在当前集群没有发布过配置时,才会使用default集群的配置。", "Config.ClusterIsCustomTipContent": "属于 '{{name}}' 集群的实例只会使用 '{{name}}' 集群(当前页面)的配置,只有当对应namespace在当前集群没有发布过配置时,才会使用default集群的配置。",
"Config.HasNotPublishNamespace": "以下环境/集群有未发布的配置,客户端获取不到未发布的配置,请及时发布。", "Config.HasNotPublishNamespace": "以下环境/集群有未发布的配置,客户端获取不到未发布的配置,请及时发布。",
"Config.DeleteItem.DialogTitle": "删除配置", "Config.DeleteItem.DialogTitle": "删除配置",
...@@ -380,10 +383,10 @@ ...@@ -380,10 +383,10 @@
"Config.FavoriteSuccessfully": "收藏成功", "Config.FavoriteSuccessfully": "收藏成功",
"Config.FavoriteFailed": "收藏失败", "Config.FavoriteFailed": "收藏失败",
"Config.CancelledFavorite": "取消收藏成功", "Config.CancelledFavorite": "取消收藏成功",
"Config.CanceFavoriteFailed": "取消收藏失败", "Config.CancelFavoriteFailed": "取消收藏失败",
"Config.GetrUserInfoFailed": "获取用户登录信息失败", "Config.GetUserInfoFailed": "获取用户登录信息失败",
"Config.LoadingAllNamespaceError": "加载配置信息出错", "Config.LoadingAllNamespaceError": "加载配置信息出错",
"Config.CanceFavoriteError": "取消收藏失败", "Config.CancelFavoriteError": "取消收藏失败",
"Config.Deleted": "删除成功", "Config.Deleted": "删除成功",
"Config.DeleteFailed": "删除失败", "Config.DeleteFailed": "删除失败",
"Config.GrayscaleCreated": "创建灰度成功", "Config.GrayscaleCreated": "创建灰度成功",
...@@ -433,33 +436,33 @@ ...@@ -433,33 +436,33 @@
"Namespace.CreatePrivate.Tips2": "通过创建一个私有的Namespace可以实现分组管理配置", "Namespace.CreatePrivate.Tips2": "通过创建一个私有的Namespace可以实现分组管理配置",
"Namespace.CreatePrivate.Tips3": "私有Namespace的格式可以是xml、yml、yaml、json、txt. 您可以通过apollo-client中ConfigFile接口来获取非properties格式Namespace的内容", "Namespace.CreatePrivate.Tips3": "私有Namespace的格式可以是xml、yml、yaml、json、txt. 您可以通过apollo-client中ConfigFile接口来获取非properties格式Namespace的内容",
"Namespace.CreatePrivate.Tips4": "1.3.0及以上版本的apollo-client针对yaml/yml提供了更好的支持,可以通过ConfigService.getConfig(\"someNamespace.yml\")直接获取Config对象,也可以通过@EnableApolloConfig(\"someNamespace.yml\")或apollo.bootstrap.namespaces=someNamespace.yml注入yml配置到Spring/SpringBoot中去", "Namespace.CreatePrivate.Tips4": "1.3.0及以上版本的apollo-client针对yaml/yml提供了更好的支持,可以通过ConfigService.getConfig(\"someNamespace.yml\")直接获取Config对象,也可以通过@EnableApolloConfig(\"someNamespace.yml\")或apollo.bootstrap.namespaces=someNamespace.yml注入yml配置到Spring/SpringBoot中去",
"Namespace.CreateNamespcae": "创建Namespace", "Namespace.CreateNamespace": "创建Namespace",
"Namespace.AssociationPublicNamespcae": "关联公共Namespace", "Namespace.AssociationPublicNamespace": "关联公共Namespace",
"Namespace.ChooseCluster": "选择集群", "Namespace.ChooseCluster": "选择集群",
"Namespace.NamespaceName": "名称", "Namespace.NamespaceName": "名称",
"Namespace.AutoAddDepartmentPrefix": "自动添加部门前缀", "Namespace.AutoAddDepartmentPrefix": "自动添加部门前缀",
"Namespace.AutoAddDepartmentPrefixTips": "(公共Namespace的名称需要全局唯一,添加部门前缀有助于保证全局唯一性)", "Namespace.AutoAddDepartmentPrefixTips": "(公共Namespace的名称需要全局唯一,添加部门前缀有助于保证全局唯一性)",
"Namespace.NamespcaeType": "类型", "Namespace.NamespaceType": "类型",
"Namespace.NamespcaeType.Public": "public", "Namespace.NamespaceType.Public": "public",
"Namespace.NamespcaeType.Private": "private", "Namespace.NamespaceType.Private": "private",
"Namespace.Remark": "备注", "Namespace.Remark": "备注",
"Namespace.Namespace": "namespace", "Namespace.Namespace": "namespace",
"Namespace.PleaseChooseNamespace": "请选择Namespace", "Namespace.PleaseChooseNamespace": "请选择Namespace",
"Namespace.LoadingPublicNamespaceError": "加载公共namespace错误", "Namespace.LoadingPublicNamespaceError": "加载公共namespace错误",
"Namespace.LoadingAppInfoError": "加载App信息出错", "Namespace.LoadingAppInfoError": "加载App信息出错",
"Namespace.PleaseChooseCluster": "请选择集群", "Namespace.PleaseChooseCluster": "请选择集群",
"Namespace.ChecknamespaceNameLengthTip": "namespace名称不能大于32个字符. 部门前缀:'{{departmentLength}}'个字符, 名称{{namespaceLength}}个字符", "Namespace.CheckNamespaceNameLengthTip": "namespace名称不能大于32个字符. 部门前缀:'{{departmentLength}}'个字符, 名称{{namespaceLength}}个字符",
"SericeConfig.Title": "应用配置", "ServiceConfig.Title": "应用配置",
"SericeConfig.Tips": "(维护ApolloPortalDB.ServerConfig表数据,如果已存在配置项则会覆盖,否则会创建配置项。配置更新后,一分钟后自动生效)", "ServiceConfig.Tips": "(维护ApolloPortalDB.ServerConfig表数据,如果已存在配置项则会覆盖,否则会创建配置项。配置更新后,一分钟后自动生效)",
"SericeConfig.Key": "key", "ServiceConfig.Key": "key",
"SericeConfig.KeyTips": "(修改配置前请先查询该配置信息)", "ServiceConfig.KeyTips": "(修改配置前请先查询该配置信息)",
"SericeConfig.Value": "value", "ServiceConfig.Value": "value",
"SericeConfig.Comment": "comment", "ServiceConfig.Comment": "comment",
"SericeConfig.Saved": "保存成功", "ServiceConfig.Saved": "保存成功",
"SericeConfig.SaveFailed": "保存失败", "ServiceConfig.SaveFailed": "保存失败",
"SericeConfig.PleaseEnterKey": "请输入key", "ServiceConfig.PleaseEnterKey": "请输入key",
"SericeConfig.KeyNotExistsAndCreateTip": "Key: '{{key}}' 不存在,点击保存后会创建该配置项", "ServiceConfig.KeyNotExistsAndCreateTip": "Key: '{{key}}' 不存在,点击保存后会创建该配置项",
"SericeConfig.KeyExistsAndSaveTip": "Key: '{{key}}' 已存在,点击保存后会覆盖该配置项", "ServiceConfig.KeyExistsAndSaveTip": "Key: '{{key}}' 已存在,点击保存后会覆盖该配置项",
"SystemInfo.Title": "系统信息", "SystemInfo.Title": "系统信息",
"SystemInfo.SystemVersion": "系统版本", "SystemInfo.SystemVersion": "系统版本",
"SystemInfo.Tips1": "环境列表来自于ApolloPortalDB.ServerConfig中的<strong>apollo.portal.envs</strong>配置,可以到<a href=\"{{serverConfigUrl}}\">系统参数</a>页面配置,更多信息可以参考<a href=\"{{wikiUrl}}\">分布式部署指南</a>中的<strong>apollo.portal.envs - 可支持的环境列表</strong>章节。", "SystemInfo.Tips1": "环境列表来自于ApolloPortalDB.ServerConfig中的<strong>apollo.portal.envs</strong>配置,可以到<a href=\"{{serverConfigUrl}}\">系统参数</a>页面配置,更多信息可以参考<a href=\"{{wikiUrl}}\">分布式部署指南</a>中的<strong>apollo.portal.envs - 可支持的环境列表</strong>章节。",
...@@ -499,7 +502,7 @@ ...@@ -499,7 +502,7 @@
"SystemRole.AddFailed": "添加失败", "SystemRole.AddFailed": "添加失败",
"SystemRole.Deleted": "删除成功", "SystemRole.Deleted": "删除成功",
"SystemRole.DeleteFailed": "删除失败", "SystemRole.DeleteFailed": "删除失败",
"SystemRole.GetCanCreateProjectUsersError": "获取拥有创建项目的用户列表出错", "SystemRole.GetCanCreateProjectUsersError": "获取拥有创建项目权限的用户列表出错",
"SystemRole.PleaseEnterAppId": "请输入appId", "SystemRole.PleaseEnterAppId": "请输入appId",
"SystemRole.AppIdNotFound": "AppId: '{{appId}}' 不存在!", "SystemRole.AppIdNotFound": "AppId: '{{appId}}' 不存在!",
"SystemRole.AppInfoContent": "应用名:'{{appName}}' 部门:'{{departmentName}}({{departmentId}})' 负责人:'{{ownerName}}", "SystemRole.AppInfoContent": "应用名:'{{appName}}' 部门:'{{departmentName}}({{departmentId}})' 负责人:'{{ownerName}}",
...@@ -526,7 +529,7 @@ ...@@ -526,7 +529,7 @@
"Open.Manage.Create": "创建", "Open.Manage.Create": "创建",
"Open.Manage.GrantPermission": "赋权", "Open.Manage.GrantPermission": "赋权",
"Open.Manage.GrantPermissionTips": "(Namespace级别权限包括: 修改、发布Namespace。应用级别权限包括: 创建Namespace、修改或发布应用下任何Namespace)", "Open.Manage.GrantPermissionTips": "(Namespace级别权限包括: 修改、发布Namespace。应用级别权限包括: 创建Namespace、修改或发布应用下任何Namespace)",
"Open.Manage.Token": "token", "Open.Manage.Token": "Token",
"Open.Manage.ManagedAppId": "被管理的AppId", "Open.Manage.ManagedAppId": "被管理的AppId",
"Open.Manage.ManagedNamespace": "被管理的Namespace", "Open.Manage.ManagedNamespace": "被管理的Namespace",
"Open.Manage.ManagedNamespaceTips": "(非properties类型的namespace请加上类型后缀,例如apollo.xml)", "Open.Manage.ManagedNamespaceTips": "(非properties类型的namespace请加上类型后缀,例如apollo.xml)",
...@@ -543,10 +546,10 @@ ...@@ -543,10 +546,10 @@
"Namespace.Role.GrantModifyTo": "修改权", "Namespace.Role.GrantModifyTo": "修改权",
"Namespace.Role.GrantModifyTo2": "(可以修改配置)", "Namespace.Role.GrantModifyTo2": "(可以修改配置)",
"Namespace.Role.AllEnv": "所有环境", "Namespace.Role.AllEnv": "所有环境",
"Namespace.Role.GrantPubishTo": "发布权", "Namespace.Role.GrantPublishTo": "发布权",
"Namespace.Role.GrantPubishTo2": "(可以发布配置)", "Namespace.Role.GrantPublishTo2": "(可以发布配置)",
"Namespace.Role.Add": "添加", "Namespace.Role.Add": "添加",
"Namespace.Role.NoPermisson": "您没有权限哟!", "Namespace.Role.NoPermission": "您没有权限哟!",
"Namespace.Role.InitNamespacePermissionError": "初始化授权出错", "Namespace.Role.InitNamespacePermissionError": "初始化授权出错",
"Namespace.Role.GetEnvGrantUserError": "加载 '{{env}}' 授权用户出错", "Namespace.Role.GetEnvGrantUserError": "加载 '{{env}}' 授权用户出错",
"Namespace.Role.GetGrantUserError": "加载授权用户出错", "Namespace.Role.GetGrantUserError": "加载授权用户出错",
...@@ -608,9 +611,11 @@ ...@@ -608,9 +611,11 @@
"Config.History.OperationType7": "放弃灰度", "Config.History.OperationType7": "放弃灰度",
"Config.History.OperationType8": "删除灰度(全量发布)", "Config.History.OperationType8": "删除灰度(全量发布)",
"Config.History.UrgentPublish": "紧急发布", "Config.History.UrgentPublish": "紧急发布",
"Config.History.LoadingMore": "加载更多", "Config.History.LoadMore": "加载更多",
"Config.History.ChangedItem": "变更的配置", "Config.History.ChangedItem": "变更的配置",
"Config.History.ChangedItemTips": "查看此次发布与上次版本的变更",
"Config.History.AllItem": "全部配置", "Config.History.AllItem": "全部配置",
"Config.History.AllItemTips": "查看此次发布的所有配置信息",
"Config.History.ChangeType": "Type", "Config.History.ChangeType": "Type",
"Config.History.ChangeKey": "Key", "Config.History.ChangeKey": "Key",
"Config.History.ChangeValue": "Value", "Config.History.ChangeValue": "Value",
...@@ -625,7 +630,7 @@ ...@@ -625,7 +630,7 @@
"Config.History.GrayscaleAppId": "灰度的AppId", "Config.History.GrayscaleAppId": "灰度的AppId",
"Config.History.GrayscaleIp": "灰度的IP", "Config.History.GrayscaleIp": "灰度的IP",
"Config.History.NoGrayscaleRule": "无灰度规则", "Config.History.NoGrayscaleRule": "无灰度规则",
"Config.History.NoPermissonTips": "您不是该项目的管理员,也没有该Namespace的编辑或发布权限,无法查看发布历史", "Config.History.NoPermissionTips": "您不是该项目的管理员,也没有该Namespace的编辑或发布权限,无法查看发布历史",
"Config.History.NoPublishHistory": "无发布历史信息", "Config.History.NoPublishHistory": "无发布历史信息",
"Config.History.LoadingHistoryError": "无发布历史信息", "Config.History.LoadingHistoryError": "无发布历史信息",
"Config.Diff.Title": "比较配置", "Config.Diff.Title": "比较配置",
...@@ -654,7 +659,7 @@ ...@@ -654,7 +659,7 @@
"App.Setting.ProjectOwner": "项目负责人", "App.Setting.ProjectOwner": "项目负责人",
"App.Setting.Modify": "修改项目信息", "App.Setting.Modify": "修改项目信息",
"App.Setting.Cancel": "取消修改", "App.Setting.Cancel": "取消修改",
"App.Setting.NoPermissonTips": "您没有权限操作,请找 [{{users}}] 开通权限", "App.Setting.NoPermissionTips": "您没有权限操作,请找 [{{users}}] 开通权限",
"App.Setting.DeleteAdmin": "删除管理员", "App.Setting.DeleteAdmin": "删除管理员",
"App.Setting.CanNotDeleteAllAdmin": "不能删除所有的管理员", "App.Setting.CanNotDeleteAllAdmin": "不能删除所有的管理员",
"App.Setting.PleaseChooseUser": "请选择用户", "App.Setting.PleaseChooseUser": "请选择用户",
...@@ -662,7 +667,7 @@ ...@@ -662,7 +667,7 @@
"App.Setting.AddFailed": "添加失败", "App.Setting.AddFailed": "添加失败",
"App.Setting.Deleted": "删除成功", "App.Setting.Deleted": "删除成功",
"App.Setting.DeleteFailed": "删除失败", "App.Setting.DeleteFailed": "删除失败",
"App.Setting.Modifed": "修改成功", "App.Setting.Modified": "修改成功",
"Valdr.App.AppId.Size": "AppId长度不能多于32个字符", "Valdr.App.AppId.Size": "AppId长度不能多于32个字符",
"Valdr.App.AppId.Required": "AppId不能为空", "Valdr.App.AppId.Required": "AppId不能为空",
"Valdr.App.appName.Size": "应用名称长度不能多于128个字符", "Valdr.App.appName.Size": "应用名称长度不能多于128个字符",
...@@ -689,7 +694,7 @@ ...@@ -689,7 +694,7 @@
"ItemModal.AddedTips": "添加成功,如需生效请发布", "ItemModal.AddedTips": "添加成功,如需生效请发布",
"ItemModal.AddFailed": "添加失败", "ItemModal.AddFailed": "添加失败",
"ItemModal.PleaseChooseCluster": "请选择集群", "ItemModal.PleaseChooseCluster": "请选择集群",
"ItemModal.ModifedTips": "更新成功, 如需生效请发布", "ItemModal.ModifiedTips": "更新成功, 如需生效请发布",
"ItemModal.ModifyFailed": "更新失败", "ItemModal.ModifyFailed": "更新失败",
"ItemModal.Tabs": "制表符", "ItemModal.Tabs": "制表符",
"ItemModal.NewLine": "换行符", "ItemModal.NewLine": "换行符",
...@@ -697,9 +702,9 @@ ...@@ -697,9 +702,9 @@
"ApolloNsPanel.LoadingHistoryError": "加载修改历史记录出错", "ApolloNsPanel.LoadingHistoryError": "加载修改历史记录出错",
"ApolloNsPanel.LoadingGrayscaleError": "加载修改历史记录出错", "ApolloNsPanel.LoadingGrayscaleError": "加载修改历史记录出错",
"ApolloNsPanel.Deleted": "删除成功", "ApolloNsPanel.Deleted": "删除成功",
"ApolloNsPanel.GrayscaleModifed": "灰度规则更新成功", "ApolloNsPanel.GrayscaleModified": "灰度规则更新成功",
"ApolloNsPanel.GrayscaleModifyFailed": "灰度规则更新失败", "ApolloNsPanel.GrayscaleModifyFailed": "灰度规则更新失败",
"ApolloNsPanel.ModifedTips": "更新成功, 如需生效请发布", "ApolloNsPanel.ModifiedTips": "更新成功, 如需生效请发布",
"ApolloNsPanel.ModifyFailed": "更新失败", "ApolloNsPanel.ModifyFailed": "更新失败",
"ApolloNsPanel.GrammarIsright": "语法正确!", "ApolloNsPanel.GrammarIsright": "语法正确!",
"ReleaseModal.Published": "发布成功", "ReleaseModal.Published": "发布成功",
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
ng-click="getUserCreatedApps()"> ng-click="getUserCreatedApps()">
<div href="#" class="thumbnail hover cursor-pointer"> <div href="#" class="thumbnail hover cursor-pointer">
<img class="more-img" src="img/more.png" /> <img class="more-img" src="img/more.png" />
<h5>{{'Index.LoadingMore' | translate }}</h5> <h5>{{'Index.LoadMore' | translate }}</h5>
</div> </div>
</div> </div>
</aside> </aside>
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<div class="col-md-2 text-center" ng-show="hasMoreFavorites" ng-click="getUserFavorites()"> <div class="col-md-2 text-center" ng-show="hasMoreFavorites" ng-click="getUserFavorites()">
<div href="#" class="thumbnail hover cursor-pointer"> <div href="#" class="thumbnail hover cursor-pointer">
<img class="more-img" src="img/more.png" /> <img class="more-img" src="img/more.png" />
<h5>{{'Index.LoadingMore' | translate }}</h5> <h5>{{'Index.LoadMore' | translate }}</h5>
</div> </div>
</div> </div>
<div class="no-favorites text-center" ng-show="!favorites || favorites.length == 0"> <div class="no-favorites text-center" ng-show="!favorites || favorites.length == 0">
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<section class="media visit-app-list" ng-show="visitedApps && visitedApps.length"> <section class="media visit-app-list" ng-show="visitedApps && visitedApps.length">
<aside class="media-left text-center"> <aside class="media-left text-center">
<h5>{{'Index.RecentyViewedItems' | translate }}</h5> <h5>{{'Index.RecentlyViewedItems' | translate }}</h5>
</aside> </aside>
<aside class="media-body"> <aside class="media-body">
<div class="app-panel col-md-2 text-center" ng-repeat="app in visitedApps" <div class="app-panel col-md-2 text-center" ng-repeat="app in visitedApps"
...@@ -117,10 +117,6 @@ ...@@ -117,10 +117,6 @@
<script src="vendor/angular/angular-translate.2.18.1/angular-translate-loader-static-files.min.js"></script> <script src="vendor/angular/angular-translate.2.18.1/angular-translate-loader-static-files.min.js"></script>
<script src="vendor/angular/angular-translate.2.18.1/angular-translate-storage-cookie.min.js"></script> <script src="vendor/angular/angular-translate.2.18.1/angular-translate-storage-cookie.min.js"></script>
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate.min.js"></script>-->
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js"></script>-->
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script>-->
<!-- jquery.js --> <!-- jquery.js -->
<script src="vendor/jquery.min.js" type="text/javascript"></script> <script src="vendor/jquery.min.js" type="text/javascript"></script>
<script src="vendor/select2/select2.min.js" type="text/javascript"></script> <script src="vendor/select2/select2.min.js" type="text/javascript"></script>
......
...@@ -62,10 +62,10 @@ ...@@ -62,10 +62,10 @@
<div class="row text-right" style="padding-right: 20px;"> <div class="row text-right" style="padding-right: 20px;">
<div class="btn-group btn-group-sm" role="group" aria-label="..."> <div class="btn-group btn-group-sm" role="group" aria-label="...">
<button type="button" class="btn btn-default" ng-class="{active:type=='link'}" <button type="button" class="btn btn-default" ng-class="{active:type=='link'}"
ng-click="switchType('link')">{{'Namespace.AssociationPublicNamespcae' | translate }} ng-click="switchType('link')">{{'Namespace.AssociationPublicNamespace' | translate }}
</button> </button>
<button type="button" class="btn btn-default" ng-class="{active:type=='create'}" <button type="button" class="btn btn-default" ng-class="{active:type=='create'}"
ng-click="switchType('create')">{{'Namespace.CreateNamespcae' | translate }} ng-click="switchType('create')">{{'Namespace.CreateNamespace' | translate }}
</button> </button>
</div> </div>
</div> </div>
...@@ -142,16 +142,16 @@ ...@@ -142,16 +142,16 @@
ng-show="type == 'create' && (pageSetting.canAppAdminCreatePrivateNamespace || hasRootPermission)"> ng-show="type == 'create' && (pageSetting.canAppAdminCreatePrivateNamespace || hasRootPermission)">
<label class="col-sm-3 control-label"> <label class="col-sm-3 control-label">
<apollorequiredfield></apollorequiredfield> <apollorequiredfield></apollorequiredfield>
{{'Namespace.NamespcaeType' | translate }} {{'Namespace.NamespaceType' | translate }}
</label> </label>
<div class="col-sm-4" valdr-form-group> <div class="col-sm-4" valdr-form-group>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" name="namespaceType" value="true" ng-value="true" <input type="radio" name="namespaceType" value="true" ng-value="true"
ng-model="appNamespace.isPublic"> {{'Namespace.NamespcaeType.Public' | translate }} ng-model="appNamespace.isPublic"> {{'Namespace.NamespaceType.Public' | translate }}
</label> </label>
<label class="radio-inline"> <label class="radio-inline">
<input type="radio" name="namespaceType" value="false" ng-value="false" <input type="radio" name="namespaceType" value="false" ng-value="false"
ng-model="appNamespace.isPublic"> {{'Namespace.NamespcaeType.Private' | translate }} ng-model="appNamespace.isPublic"> {{'Namespace.NamespaceType.Private' | translate }}
</label> </label>
</div> </div>
</div> </div>
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label <label
class="col-sm-2 control-label">{{'Namespace.Role.GrantModifyTo' | translate }}<br><small>{{'Namespace.Role.GrantModifyT2' | translate }}</small></label> class="col-sm-2 control-label">{{'Namespace.Role.GrantModifyTo' | translate }}<br><small>{{'Namespace.Role.GrantModifyTo2' | translate }}</small></label>
<div class="col-sm-8"> <div class="col-sm-8">
<form class="form-inline" ng-submit="assignRoleToUser('ModifyNamespace')"> <form class="form-inline" ng-submit="assignRoleToUser('ModifyNamespace')">
<div class="form-group"> <div class="form-group">
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<div class="form-horizontal"> <div class="form-horizontal">
<div class="col-sm-2 text-right"> <div class="col-sm-2 text-right">
<label <label
class="control-label">{{'Namespace.Role.GrantPubishTo' | translate }}<br><small>{{'Namespace.Role.GrantPubishTo2' | translate }}</small></label> class="control-label">{{'Namespace.Role.GrantPublishTo' | translate }}<br><small>{{'Namespace.Role.GrantPublishTo2' | translate }}</small></label>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<form class="form-inline" ng-submit="assignRoleToUser('ReleaseNamespace')"> <form class="form-inline" ng-submit="assignRoleToUser('ReleaseNamespace')">
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
</div> </div>
<div class="panel-body text-center" ng-show="!hasAssignUserPermission"> <div class="panel-body text-center" ng-show="!hasAssignUserPermission">
<h2>{{'Namespace.Role.NoPermisson' | translate }}</h2> <h2>{{'Namespace.Role.NoPermission' | translate }}</h2>
</div> </div>
</section> </section>
......
...@@ -2,7 +2,7 @@ appUtil.service('AppUtil', ['toastr', '$window', '$q', '$translate', function (t ...@@ -2,7 +2,7 @@ appUtil.service('AppUtil', ['toastr', '$window', '$q', '$translate', function (t
function parseErrorMsg(response) { function parseErrorMsg(response) {
if (response.status == -1) { if (response.status == -1) {
return $translate.instant('Common.LoginExprieTips'); return $translate.instant('Common.LoginExpiredTips');
} }
var msg = "Code:" + response.status; var msg = "Code:" + response.status;
if (response.data.message != null) { if (response.data.message != null) {
...@@ -13,7 +13,7 @@ appUtil.service('AppUtil', ['toastr', '$window', '$q', '$translate', function (t ...@@ -13,7 +13,7 @@ appUtil.service('AppUtil', ['toastr', '$window', '$q', '$translate', function (t
function parsePureErrorMsg(response) { function parsePureErrorMsg(response) {
if (response.status == -1) { if (response.status == -1) {
return $translate.instant('Common.LoginExprieTips'); return $translate.instant('Common.LoginExpiredTips');
} }
if (response.data.message != null) { if (response.data.message != null) {
return response.data.message; return response.data.message;
......
...@@ -2,15 +2,19 @@ ...@@ -2,15 +2,19 @@
var appUtil = angular.module('app.util', ['toastr', 'ngCookies', 'pascalprecht.translate']) var appUtil = angular.module('app.util', ['toastr', 'ngCookies', 'pascalprecht.translate'])
.config(['$translateProvider', function ($translateProvider) { .config(['$translateProvider', function ($translateProvider) {
// $translateProvider.useMissingTranslationHandlerLog(); $translateProvider.useSanitizeValueStrategy(null); // disable sanitization by default
$translateProvider.useCookieStorage(); $translateProvider.useCookieStorage();
$translateProvider.useStaticFilesLoader({ $translateProvider.useStaticFilesLoader({
prefix: '/i18n/', prefix: '/i18n/',
suffix: '.json' suffix: '.json'
}); });
$translateProvider.preferredLanguage('en'); $translateProvider.registerAvailableLanguageKeys(['en', 'zh-CN'], {
$translateProvider.fallbackLanguage('zh-cn'); 'zh-*': 'zh-CN',
'zh': 'zh-CN',
'en-*': 'en',
"*": "en"
})
$translateProvider.uniformLanguageTag('bcp47').determinePreferredLanguage();
}]); }]);
/**service module 定义*/ /**service module 定义*/
var appService = angular.module('app.service', ['ngResource', 'app.util']) var appService = angular.module('app.service', ['ngResource', 'app.util'])
......
...@@ -27,7 +27,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap ...@@ -27,7 +27,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap
organizations.push(org); organizations.push(org);
}); });
$('#organization').select2({ $('#organization').select2({
placeholder: $translate.instant('Common.PelaseChooseDepartment'), placeholder: $translate.instant('Common.PleaseChooseDepartment'),
width: '100%', width: '100%',
data: organizations data: organizations
}); });
...@@ -60,7 +60,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap ...@@ -60,7 +60,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap
var selectedOrg = $('#organization').select2('data')[0]; var selectedOrg = $('#organization').select2('data')[0];
if (!selectedOrg.id) { if (!selectedOrg.id) {
toastr.warning($translate.instant('Common.PelaseChooseDepartment')); toastr.warning($translate.instant('Common.PleaseChooseDepartment'));
$scope.submitBtnDisabled = false; $scope.submitBtnDisabled = false;
return; return;
} }
...@@ -74,7 +74,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap ...@@ -74,7 +74,7 @@ function createAppController($scope, $window, $translate, toastr, AppService, Ap
owner = { id: $scope.currentUser.userId }; owner = { id: $scope.currentUser.userId };
} }
if (!owner) { if (!owner) {
toastr.warning($translate.instant('Common.PelaseChooseOwner')); toastr.warning($translate.instant('Common.PleaseChooseOwner'));
$scope.submitBtnDisabled = false; $scope.submitBtnDisabled = false;
return; return;
} }
......
...@@ -62,7 +62,7 @@ function DeleteAppClusterNamespaceController($scope, $translate, toastr, AppUtil ...@@ -62,7 +62,7 @@ function DeleteAppClusterNamespaceController($scope, $translate, toastr, AppUtil
toastr.warning($translate.instant('Delete.PleaseEnterAppId')); toastr.warning($translate.instant('Delete.PleaseEnterAppId'));
return; return;
} }
if (confirm($translate.instant('Delete.PleaseEnterAppId', { appId: $scope.app.appId }))) { if (confirm($translate.instant('Delete.ConfirmDeleteAppId', { appId: $scope.app.appId }))) {
AppService.delete_app($scope.app.appId).then(function (result) { AppService.delete_app($scope.app.appId).then(function (result) {
toastr.success($translate.instant('Delete.Deleted')); toastr.success($translate.instant('Delete.Deleted'));
$scope.deleteAppBtnDisabled = true; $scope.deleteAppBtnDisabled = true;
...@@ -99,9 +99,9 @@ function DeleteAppClusterNamespaceController($scope, $translate, toastr, AppUtil ...@@ -99,9 +99,9 @@ function DeleteAppClusterNamespaceController($scope, $translate, toastr, AppUtil
return; return;
} }
var confirmTip = $translate.instant('Delete.ConfirmDeleteCluster', { var confirmTip = $translate.instant('Delete.ConfirmDeleteCluster', {
appId: result.appId, appId: $scope.cluster.appId,
env: $scope.cluster.env, env: $scope.cluster.env,
clusterName: result.name clusterName: $scope.cluster.name
}); });
if (confirm(confirmTip)) { if (confirm(confirmTip)) {
......
...@@ -8,10 +8,12 @@ function LoginController($scope, $window, $location, $translate, toastr, AppUtil ...@@ -8,10 +8,12 @@ function LoginController($scope, $window, $location, $translate, toastr, AppUtil
if (params.error) { if (params.error) {
$translate('Login.UserNameOrPasswordIncorrect').then(function(result) { $translate('Login.UserNameOrPasswordIncorrect').then(function(result) {
$scope.info = result; $scope.info = result;
}) });
} }
if (params.logout) { if (params.logout) {
$scope.info = $translate.instant('Login.LogoutSuccessfully'); $translate('Login.LogoutSuccessfully').then(function(result) {
$scope.info = result;
});
} }
} }
......
...@@ -118,7 +118,7 @@ namespace_module.controller("LinkNamespaceController", ...@@ -118,7 +118,7 @@ namespace_module.controller("LinkNamespaceController",
var namespaceNameLength = $scope.concatNamespace().length; var namespaceNameLength = $scope.concatNamespace().length;
if (namespaceNameLength > 32) { if (namespaceNameLength > 32) {
var errorTip = $translate.instant('Namespace.ChecknamespaceNameLengthTip', { var errorTip = $translate.instant('Namespace.CheckNamespaceNameLengthTip', {
departmentLength: namespaceNameLength - $scope.appNamespace.name.length, departmentLength: namespaceNameLength - $scope.appNamespace.name.length,
namespaceLength: $scope.appNamespace.name.length namespaceLength: $scope.appNamespace.name.length
}); });
......
...@@ -7,17 +7,17 @@ server_config_module.controller('ServerConfigController', ...@@ -7,17 +7,17 @@ server_config_module.controller('ServerConfigController',
$scope.create = function () { $scope.create = function () {
ServerConfigService.create($scope.serverConfig).then(function (result) { ServerConfigService.create($scope.serverConfig).then(function (result) {
toastr.success($translate.instant('SericeConfig.Saved')); toastr.success($translate.instant('ServiceConfig.Saved'));
$scope.saveBtnDisabled = true; $scope.saveBtnDisabled = true;
$scope.serverConfig = result; $scope.serverConfig = result;
}, function (result) { }, function (result) {
toastr.error(AppUtil.errorMsg(result), $translate.instant('SericeConfig.SaveFailed')); toastr.error(AppUtil.errorMsg(result), $translate.instant('ServiceConfig.SaveFailed'));
}); });
}; };
$scope.getServerConfigInfo = function () { $scope.getServerConfigInfo = function () {
if (!$scope.serverConfig.key) { if (!$scope.serverConfig.key) {
toastr.warning($translate.instant('SericeConfig.PleaseEnterKey')); toastr.warning($translate.instant('ServiceConfig.PleaseEnterKey'));
return; return;
} }
...@@ -25,11 +25,11 @@ server_config_module.controller('ServerConfigController', ...@@ -25,11 +25,11 @@ server_config_module.controller('ServerConfigController',
$scope.saveBtnDisabled = false; $scope.saveBtnDisabled = false;
if (!result.key) { if (!result.key) {
toastr.info($translate.instant('SericeConfig.KeyNotExistsAndCreateTip', { key: $scope.serverConfig.key })); toastr.info($translate.instant('ServiceConfig.KeyNotExistsAndCreateTip', { key: $scope.serverConfig.key }));
return; return;
} }
toastr.info($translate.instant('SericeConfig.KeyExistsAndSaveTip', { key: $scope.serverConfig.key })); toastr.info($translate.instant('ServiceConfig.KeyExistsAndSaveTip', { key: $scope.serverConfig.key }));
$scope.serverConfig = result; $scope.serverConfig = result;
}, function (result) { }, function (result) {
AppUtil.showErrorMsg(result); AppUtil.showErrorMsg(result);
......
...@@ -49,7 +49,7 @@ function SettingController($scope, $location, $translate, toastr, ...@@ -49,7 +49,7 @@ function SettingController($scope, $location, $translate, toastr,
organizations.push(org); organizations.push(org);
}); });
$orgWidget.select2({ $orgWidget.select2({
placeholder: $translate.instant('Common.PelaseChooseDepartment'), placeholder: $translate.instant('Common.PleaseChooseDepartment'),
width: '100%', width: '100%',
data: organizations data: organizations
}); });
...@@ -177,7 +177,7 @@ function SettingController($scope, $location, $translate, toastr, ...@@ -177,7 +177,7 @@ function SettingController($scope, $location, $translate, toastr,
var selectedOrg = $orgWidget.select2('data')[0]; var selectedOrg = $orgWidget.select2('data')[0];
if (!selectedOrg.id) { if (!selectedOrg.id) {
toastr.warning($translate.instant('Common.PelaseChooseDepartment')); toastr.warning($translate.instant('Common.PleaseChooseDepartment'));
return; return;
} }
...@@ -187,13 +187,13 @@ function SettingController($scope, $location, $translate, toastr, ...@@ -187,13 +187,13 @@ function SettingController($scope, $location, $translate, toastr,
// owner // owner
var owner = $('.ownerSelector').select2('data')[0]; var owner = $('.ownerSelector').select2('data')[0];
if (!owner) { if (!owner) {
toastr.warning($translate.instant('Common.PelaseChooseOwner')); toastr.warning($translate.instant('Common.PleaseChooseOwner'));
return; return;
} }
app.ownerName = owner.id; app.ownerName = owner.id;
AppService.update(app).then(function (app) { AppService.update(app).then(function (app) {
toastr.success($translate.instant('Common.Modifed')); toastr.success($translate.instant('App.Setting.Modified'));
initApplication(); initApplication();
$scope.display.app.edit = false; $scope.display.app.edit = false;
$scope.submitBtnDisabled = false; $scope.submitBtnDisabled = false;
......
...@@ -45,7 +45,7 @@ function ConfigBaseInfoController($rootScope, $scope, $window, $location, $trans ...@@ -45,7 +45,7 @@ function ConfigBaseInfoController($rootScope, $scope, $window, $location, $trans
loadAppInfo(); loadAppInfo();
handleFavorite(); handleFavorite();
}, function (result) { }, function (result) {
toastr.error(AppUtil.errorMsg(result), $translate.instant('Config.GetrUserInfoFailed')); toastr.error(AppUtil.errorMsg(result), $translate.instant('Config.GetUserInfoFailed'));
}); });
handlePermission(); handlePermission();
...@@ -326,7 +326,7 @@ function ConfigBaseInfoController($rootScope, $scope, $window, $location, $trans ...@@ -326,7 +326,7 @@ function ConfigBaseInfoController($rootScope, $scope, $window, $location, $trans
$scope.favoriteId = 0; $scope.favoriteId = 0;
toastr.success($translate.instant('Config.CancelledFavorite')); toastr.success($translate.instant('Config.CancelledFavorite'));
}, function (result) { }, function (result) {
toastr.error(AppUtil.errorMsg(result), $translate.instant('Config.CanceFavoriteFailed')); toastr.error(AppUtil.errorMsg(result), $translate.instant('Config.CancelFavoriteFailed'));
}) })
}; };
} }
......
...@@ -35,7 +35,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS ...@@ -35,7 +35,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS
organizations.push(org); organizations.push(org);
}); });
$orgWidget.select2({ $orgWidget.select2({
placeholder: $translate.instant('Common.PelaseChooseDepartment'), placeholder: $translate.instant('Common.PleaseChooseDepartment'),
width: '100%', width: '100%',
data: organizations data: organizations
}); });
...@@ -103,7 +103,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS ...@@ -103,7 +103,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS
var selectedOrg = $orgWidget.select2('data')[0]; var selectedOrg = $orgWidget.select2('data')[0];
if (!selectedOrg.id) { if (!selectedOrg.id) {
toastr.warning($translate.instant('Common.PelaseChooseDepartment')); toastr.warning($translate.instant('Common.PleaseChooseDepartment'));
return; return;
} }
...@@ -113,7 +113,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS ...@@ -113,7 +113,7 @@ function OpenManageController($scope, $translate, toastr, AppUtil, OrganizationS
// owner // owner
var owner = $('.ownerSelector').select2('data')[0]; var owner = $('.ownerSelector').select2('data')[0];
if (!owner) { if (!owner) {
toastr.warning($translate.instant('Common.PelaseChooseOwner')); toastr.warning($translate.instant('Common.PleaseChooseOwner'));
return; return;
} }
$scope.consumer.ownerName = owner.id; $scope.consumer.ownerName = owner.id;
......
...@@ -18,9 +18,10 @@ directive_module.directive('apollonav', ...@@ -18,9 +18,10 @@ directive_module.directive('apollonav',
scope.$apply(function () {}); scope.$apply(function () {});
}); });
$('#app-search-list').select2({ $translate('ApolloConfirmDialog.SearchPlaceHolder').then(function(placeholderLabel) {
placeholder: $translate.instant('ApolloConfirmDialog.SearchPlaceHolder'), $('#app-search-list').select2({
ajax: { placeholder: placeholderLabel,
ajax: {
url: "/apps/search", url: "/apps/search",
dataType: 'json', dataType: 'json',
delay: 400, delay: 400,
...@@ -28,44 +29,45 @@ directive_module.directive('apollonav', ...@@ -28,44 +29,45 @@ directive_module.directive('apollonav',
return { return {
query: params.term || '', query: params.term || '',
page: params.page ? params.page - 1 : 0, page: params.page ? params.page - 1 : 0,
size: 20 size: 20
};
},
processResults: function (data) {
if (data && data.content) {
var hasMore = data.content.length
=== data.size;
var result = [];
data.content.forEach(function (app) {
result.push({
id: app.appId,
text: app.appId + ' / ' + app.name
})
});
return {
results: result,
pagination: {
more: hasMore
}
}; };
} else { },
return { processResults: function (data) {
results: [], if (data && data.content) {
pagination: { var hasMore = data.content.length
more: false === data.size;
} var result = [];
}; data.content.forEach(function (app) {
} result.push({
id: app.appId,
text: app.appId + ' / ' + app.name
})
});
return {
results: result,
pagination: {
more: hasMore
}
};
} else {
return {
results: [],
pagination: {
more: false
}
};
}
}
} }
} });
});
$('#app-search-list').on('select2:select', function () { $('#app-search-list').on('select2:select', function () {
var selected = $('#app-search-list').select2('data'); var selected = $('#app-search-list').select2('data');
if (selected && selected.length) { if (selected && selected.length) {
jumpToConfigPage(selected[0].id) jumpToConfigPage(selected[0].id)
} }
});
}); });
function jumpToConfigPage(selectedAppId) { function jumpToConfigPage(selectedAppId) {
......
...@@ -124,7 +124,7 @@ function itemModalDirective($translate, toastr, $sce, AppUtil, EventManager, Con ...@@ -124,7 +124,7 @@ function itemModalDirective($translate, toastr, $sce, AppUtil, EventManager, Con
AppUtil.hideModal('#itemModal'); AppUtil.hideModal('#itemModal');
toastr.success($translate.instant('ItemModal.ModifedTips')); toastr.success($translate.instant('ItemModal.ModifiedTips'));
}, function (result) { }, function (result) {
toastr.error(AppUtil.errorMsg(result), $translate.instant('ItemModal.ModifyFailed')); toastr.error(AppUtil.errorMsg(result), $translate.instant('ItemModal.ModifyFailed'));
}); });
......
...@@ -659,7 +659,7 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio ...@@ -659,7 +659,7 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio
branch.rules branch.rules
) )
.then(function (result) { .then(function (result) {
toastr.success($translate.instant('ApolloNsPanel.GrayscaleModifed')); toastr.success($translate.instant('ApolloNsPanel.GrayscaleModified'));
//show tips if branch has not release configs //show tips if branch has not release configs
if (branch.itemModifiedCnt) { if (branch.itemModifiedCnt) {
...@@ -729,7 +729,7 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio ...@@ -729,7 +729,7 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio
namespace.baseInfo.namespaceName, namespace.baseInfo.namespaceName,
model).then( model).then(
function (result) { function (result) {
toastr.success($translate.instant('ApolloNsPanel.ModifedTips')); toastr.success($translate.instant('ApolloNsPanel.ModifiedTips'));
//refresh all namespace items //refresh all namespace items
EventManager.emit(EventManager.EventType.REFRESH_NAMESPACE, EventManager.emit(EventManager.EventType.REFRESH_NAMESPACE,
{ {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css"> <link rel="stylesheet" type="text/css" href="vendor/select2/select2.min.css">
<link rel="stylesheet" type="text/css" media='all' href="vendor/angular/loading-bar.min.css"> <link rel="stylesheet" type="text/css" media='all' href="vendor/angular/loading-bar.min.css">
<link rel="stylesheet" type="text/css" href="styles/common-style.css"> <link rel="stylesheet" type="text/css" href="styles/common-style.css">
<title>{{'SericeConfig.Title' | translate }}</title> <title>{{'ServiceConfig.Title' | translate }}</title>
</head> </head>
<body> <body>
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
<div class="col-md-8 col-md-offset-2"> <div class="col-md-8 col-md-offset-2">
<div class="panel"> <div class="panel">
<header class="panel-heading"> <header class="panel-heading">
{{'SericeConfig.Title' | translate }} {{'ServiceConfig.Title' | translate }}
<small>{{'SericeConfig.Tips' | translate }}</small> <small>{{'ServiceConfig.Tips' | translate }}</small>
</header> </header>
<div class="panel-body"> <div class="panel-body">
...@@ -31,12 +31,12 @@ ...@@ -31,12 +31,12 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label"> <label class="col-sm-2 control-label">
<apollorequiredfield></apollorequiredfield> <apollorequiredfield></apollorequiredfield>
{{'SericeConfig.Key' | translate }} {{'ServiceConfig.Key' | translate }}
</label> </label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="text" class="form-control" name="key" ng-model="serverConfig.key" <input type="text" class="form-control" name="key" ng-model="serverConfig.key"
required> required>
<small>{{'SericeConfig.KeyTips' | translate }}</small> <small>{{'ServiceConfig.KeyTips' | translate }}</small>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<button class="btn btn-info" <button class="btn btn-info"
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label"> <label class="col-sm-2 control-label">
<apollorequiredfield></apollorequiredfield> <apollorequiredfield></apollorequiredfield>
{{'SericeConfig.Value' | translate }} {{'ServiceConfig.Value' | translate }}
</label> </label>
<div class="col-sm-9"> <div class="col-sm-9">
<textarea class="form-control" rows="4" name="value" <textarea class="form-control" rows="4" name="value"
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label"> <label class="col-sm-2 control-label">
{{'SericeConfig.Comment' | translate }}</label> {{'ServiceConfig.Comment' | translate }}</label>
<div class="col-sm-9"> <div class="col-sm-9">
<textarea class="form-control" rows="4" name="comment" <textarea class="form-control" rows="4" name="comment"
ng-model="serverConfig.comment"></textarea> ng-model="serverConfig.comment"></textarea>
......
...@@ -297,7 +297,7 @@ table th { ...@@ -297,7 +297,7 @@ table th {
.project-info th { .project-info th {
text-align: right; text-align: right;
padding: 4px 6px; padding: 4px 2px;
width: 5em; width: 5em;
} }
...@@ -654,7 +654,7 @@ table th { ...@@ -654,7 +654,7 @@ table th {
.release-history .operation-caption { .release-history .operation-caption {
position: absolute; position: absolute;
top: 45px; top: 45px;
width: 75px; width: 100px;
height: 18px; height: 18px;
color: #fff; color: #fff;
font-size: 12px; font-size: 12px;
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li value="en"><a href="javascript:void(0)" ng-click="changeLanguage('en')">English</a></li> <li value="en"><a href="javascript:void(0)" ng-click="changeLanguage('en')">English</a></li>
<li value="zh-cn"><a href="javascript:void(0)" ng-click="changeLanguage('zh-cn')">简体中文</a></li> <li value="zh-CN"><a href="javascript:void(0)" ng-click="changeLanguage('zh-CN')">简体中文</a></li>
</ul> </ul>
</li> </li>
<li class="dropdown" ng-if="hasRootPermission"> <li class="dropdown" ng-if="hasRootPermission">
......
<table class="table table-hover" style="width: 250px"> <table class="table table-hover" style="width: 300px">
<thead> <thead>
<tr> <tr>
<td><input type="checkbox" ng-checked="envAllSelected" ng-click="toggleEnvsCheckedStatus()"></td> <td><input type="checkbox" ng-checked="envAllSelected" ng-click="toggleEnvsCheckedStatus()"></td>
......
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
title="{{'Component.Namespace.Branch.Body.DeletedItem' | translate }}">{{'Component.Namespace.Branch.Body.Delete' | translate }}</span> title="{{'Component.Namespace.Branch.Body.DeletedItem' | translate }}">{{'Component.Namespace.Branch.Body.Delete' | translate }}</span>
<span class="label label-info" ng-if="!config.isDeleted && config.masterItemExists" <span class="label label-info" ng-if="!config.isDeleted && config.masterItemExists"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Branch.Body.ChangedFormMaster' | translate }}">{{'Component.Namespace.Branch.Body.Modify' | translate }}</span> title="{{'Component.Namespace.Branch.Body.ChangedFromMaster' | translate }}">{{'Component.Namespace.Branch.Body.Modify' | translate }}</span>
<span class="label label-success" <span class="label label-success"
ng-if="!config.isDeleted && !config.masterItemExists" data-tooltip="tooltip" ng-if="!config.isDeleted && !config.masterItemExists" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
...@@ -268,7 +268,7 @@ ...@@ -268,7 +268,7 @@
<span class="label label-info" <span class="label label-info"
ng-if="config.isModified && config.oldValue && !config.isDeleted" ng-if="config.isModified && config.oldValue && !config.isDeleted"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Branch.Body.ModifedItem' | translate }}">{{'Component.Namespace.Branch.Body.Modify' | translate }}</span> title="{{'Component.Namespace.Branch.Body.ModifiedItem' | translate }}">{{'Component.Namespace.Branch.Body.Modify' | translate }}</span>
<span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip" <span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
title="{{'Component.Namespace.Branch.Body.DeletedItem' | translate }}">{{'Component.Namespace.Branch.Body.Delete' | translate }}</span> title="{{'Component.Namespace.Branch.Body.DeletedItem' | translate }}">{{'Component.Namespace.Branch.Body.Delete' | translate }}</span>
...@@ -307,7 +307,7 @@ ...@@ -307,7 +307,7 @@
<div class="alert alert-warning no-radius" <div class="alert alert-warning no-radius"
ng-show="!namespace.hasModifyPermission && !namespace.hasReleasePermission"> ng-show="!namespace.hasModifyPermission && !namespace.hasReleasePermission">
<strong>Tips:</strong> <strong>Tips:</strong>
{{'Component.Namespace.Branch.GrayScaleRule.NoPermissonTips' | translate }} {{'Component.Namespace.Branch.GrayScaleRule.NoPermissionTips' | translate }}
</div> </div>
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover">
...@@ -397,7 +397,7 @@ ...@@ -397,7 +397,7 @@
<div class="row text-center" <div class="row text-center"
ng-show="namespace.branch.latestReleaseInstances.content.length < namespace.branch.latestReleaseInstances.total"> ng-show="namespace.branch.latestReleaseInstances.content.length < namespace.branch.latestReleaseInstances.total">
<button class="btn btn-default" <button class="btn btn-default"
ng-click="loadInstanceInfo(namespace.branch)">{{'Component.Namespace.Branch.Instance.LoadingMore' | translate }}</button> ng-click="loadInstanceInfo(namespace.branch)">{{'Component.Namespace.Branch.Instance.LoadMore' | translate }}</button>
</div> </div>
</div> </div>
...@@ -450,7 +450,7 @@ ...@@ -450,7 +450,7 @@
<!--兼容老数据,不显示item类型为空行和注释的item--> <!--兼容老数据,不显示item类型为空行和注释的item-->
<tr ng-repeat="item in commits.changeSets.createItems" ng-show="item.key"> <tr ng-repeat="item in commits.changeSets.createItems" ng-show="item.key">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Branch.History.NewAdded' | translate }} {{'Component.Namespace.Branch.History.NewAdded' | translate }}
</td> </td>
<td width="20%" title="{{item.key}}"> <td width="20%" title="{{item.key}}">
...@@ -458,9 +458,9 @@ ...@@ -458,9 +458,9 @@
<span ng-bind="item.key | limitTo: 250"></span> <span ng-bind="item.key | limitTo: 250"></span>
<span ng-bind="item.key.length > 250 ? '...' :''"></span> <span ng-bind="item.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%"> <td width="28%">
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.value}}" <td width="28%" class="cursor-pointer" title="{{item.value}}"
ng-click="showText(item.value)"> ng-click="showText(item.value)">
<span ng-bind="item.value | limitTo: 250"></span> <span ng-bind="item.value | limitTo: 250"></span>
<span ng-bind="item.value.length > 250 ? '...': ''"></span> <span ng-bind="item.value.length > 250 ? '...': ''"></span>
...@@ -471,19 +471,19 @@ ...@@ -471,19 +471,19 @@
</td> </td>
</tr> </tr>
<tr ng-repeat="item in commits.changeSets.updateItems"> <tr ng-repeat="item in commits.changeSets.updateItems">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Branch.History.Modifed' | translate }} {{'Component.Namespace.Branch.History.Modified' | translate }}
</td> </td>
<td width="20%" title="{{item.newItem.key}}"> <td width="20%" title="{{item.newItem.key}}">
<span ng-bind="item.newItem.key | limitTo: 250"></span> <span ng-bind="item.newItem.key | limitTo: 250"></span>
<span ng-bind="item.newItem.key.length > 250 ? '...' :''"></span> <span ng-bind="item.newItem.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.oldItem.value}}" <td width="28%" class="cursor-pointer" title="{{item.oldItem.value}}"
ng-click="showText(item.oldItem.value)"> ng-click="showText(item.oldItem.value)">
<span ng-bind="item.oldItem.value | limitTo: 250"></span> <span ng-bind="item.oldItem.value | limitTo: 250"></span>
<span ng-bind="item.oldItem.value.length > 250 ? '...': ''"></span> <span ng-bind="item.oldItem.value.length > 250 ? '...': ''"></span>
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.newItem.value}}" <td width="28%" class="cursor-pointer" title="{{item.newItem.value}}"
ng-click="showText(item.newItem.value)"> ng-click="showText(item.newItem.value)">
<span ng-bind="item.newItem.value | limitTo: 250"></span> <span ng-bind="item.newItem.value | limitTo: 250"></span>
<span ng-bind="item.newItem.value.length > 250 ? '...': ''"></span> <span ng-bind="item.newItem.value.length > 250 ? '...': ''"></span>
...@@ -495,18 +495,18 @@ ...@@ -495,18 +495,18 @@
</tr> </tr>
<tr ng-repeat="item in commits.changeSets.deleteItems" <tr ng-repeat="item in commits.changeSets.deleteItems"
ng-show="item.key || item.comment"> ng-show="item.key || item.comment">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Branch.History.Deleted' | translate }} {{'Component.Namespace.Branch.History.Deleted' | translate }}
</td> </td>
<td width="20%" title="{{item.key}}"> <td width="20%" title="{{item.key}}">
<span ng-bind="item.key | limitTo: 250"></span> <span ng-bind="item.key | limitTo: 250"></span>
<span ng-bind="item.key.length > 250 ? '...' :''"></span> <span ng-bind="item.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%" title="{{item.value}}"> <td width="28%" title="{{item.value}}">
<span ng-bind="item.value | limitTo: 250"></span> <span ng-bind="item.value | limitTo: 250"></span>
<span ng-bind="item.value.length > 250 ? '...': ''"></span> <span ng-bind="item.value.length > 250 ? '...': ''"></span>
</td> </td>
<td width="30%"> <td width="28%">
</td> </td>
<td width="18%" title="{{item.comment}}"> <td width="18%" title="{{item.comment}}">
<span ng-bind="item.comment | limitTo: 250"></span> <span ng-bind="item.comment | limitTo: 250"></span>
...@@ -537,7 +537,7 @@ ...@@ -537,7 +537,7 @@
</div> </div>
<div class="text-center"> <div class="text-center">
<button type="button" class="btn btn-default" ng-show="!namespace.branch.hasLoadAllCommit" <button type="button" class="btn btn-default" ng-show="!namespace.branch.hasLoadAllCommit"
ng-click="loadCommitHistory(namespace.branch)">{{'Component.Namespace.Branch.History.LoadingMore' | translate }} ng-click="loadCommitHistory(namespace.branch)">{{'Component.Namespace.Branch.History.LoadMore' | translate }}
<span class="glyphicon glyphicon-menu-down"></span></button> <span class="glyphicon glyphicon-menu-down"></span></button>
</div> </div>
<div class="empty-container text-center" <div class="empty-container text-center"
......
...@@ -40,11 +40,11 @@ ...@@ -40,11 +40,11 @@
<div class="col-md-6 col-sm-6 text-right header-buttons"> <div class="col-md-6 col-sm-6 text-right header-buttons">
<button type="button" class="btn btn-success btn-sm" data-tooltip="tooltip" data-placement="bottom" <button type="button" class="btn btn-success btn-sm" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.PubishTips' | translate }}" title="{{'Component.Namespace.Master.Items.PublishTips' | translate }}"
ng-show="(namespace.hasReleasePermission || namespace.hasModifyPermission)" ng-show="(namespace.hasReleasePermission || namespace.hasModifyPermission)"
ng-disabled="namespace.isTextEditing" ng-click="publish(namespace)"> ng-disabled="namespace.isTextEditing" ng-click="publish(namespace)">
<img src="img/release.png"> <img src="img/release.png">
{{'Component.Namespace.Master.Items.Pubish' | translate }} {{'Component.Namespace.Master.Items.Publish' | translate }}
</button> </button>
<button type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom" <button type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.RollbackTips' | translate }}" title="{{'Component.Namespace.Master.Items.RollbackTips' | translate }}"
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
{{'Component.Namespace.Master.Items.Rollback' | translate }} {{'Component.Namespace.Master.Items.Rollback' | translate }}
</button> </button>
<a type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom" <a type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.PubishHistoryTips' | translate }}" title="{{'Component.Namespace.Master.Items.PublishHistoryTips' | translate }}"
href="/config/history.html?#/appid={{appId}}&env={{env}}&clusterName={{cluster}}&namespaceName={{namespace.baseInfo.namespaceName}}"> href="/config/history.html?#/appid={{appId}}&env={{env}}&clusterName={{cluster}}&namespaceName={{namespace.baseInfo.namespaceName}}">
<img src="img/release-history.png"> <img src="img/release-history.png">
{{'Component.Namespace.Master.Items.PubishHistory' | translate }} {{'Component.Namespace.Master.Items.PublishHistory' | translate }}
</a> </a>
<a type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom" <a type="button" class="btn btn-default btn-sm" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.GrantTips' | translate }}" title="{{'Component.Namespace.Master.Items.GrantTips' | translate }}"
...@@ -282,7 +282,7 @@ ...@@ -282,7 +282,7 @@
<span class="label label-info" <span class="label label-info"
ng-if="config.isModified && config.oldValue && !config.isDeleted" ng-if="config.isModified && config.oldValue && !config.isDeleted"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.ModifedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modifed' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.ModifiedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modified' | translate }}</span>
<span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip" <span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span>
...@@ -400,7 +400,7 @@ ...@@ -400,7 +400,7 @@
<span class="label label-info" <span class="label label-info"
ng-if="config.isModified && config.oldValue && !config.isDeleted" ng-if="config.isModified && config.oldValue && !config.isDeleted"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.ModifedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modifed' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.ModifiedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modified' | translate }}</span>
<span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip" <span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span>
...@@ -557,7 +557,7 @@ ...@@ -557,7 +557,7 @@
<td width="10%" class="text-center" ng-if="!config.isDeleted"> <td width="10%" class="text-center" ng-if="!config.isDeleted">
<img src="img/gray.png" data-tooltip="tooltip" data-placement="bottom" <img src="img/gray.png" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.Public.PubishedAndCover' | translate }}" title="{{'Component.Namespace.Master.Items.Body.Public.PublishedAndCover' | translate }}"
ng-click="editItem(namespace, config.item)" ng-click="editItem(namespace, config.item)"
ng-show="namespace.hasModifyPermission && !config.covered"> ng-show="namespace.hasModifyPermission && !config.covered">
</td> </td>
...@@ -622,7 +622,7 @@ ...@@ -622,7 +622,7 @@
<span class="label label-info" <span class="label label-info"
ng-if="config.isModified && config.oldValue && !config.isDeleted" ng-if="config.isModified && config.oldValue && !config.isDeleted"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.ModifedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modifed' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.ModifiedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Modified' | translate }}</span>
<span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip" <span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span> title="{{'Component.Namespace.Master.Items.Body.DeletedTips' | translate }}">{{'Component.Namespace.Master.Items.Body.Deleted' | translate }}</span>
...@@ -649,7 +649,7 @@ ...@@ -649,7 +649,7 @@
<td width="5%" class="text-center" ng-if="!config.isDeleted"> <td width="5%" class="text-center" ng-if="!config.isDeleted">
<img src="img/gray.png" data-tooltip="tooltip" data-placement="bottom" <img src="img/gray.png" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Namespace.Master.Items.Body.Public.PubishedAndCover' | translate }}" title="{{'Component.Namespace.Master.Items.Body.Public.PublishedAndCover' | translate }}"
ng-click="editItem(namespace, config.item)" ng-click="editItem(namespace, config.item)"
ng-show="namespace.hasModifyPermission && !config.covered"> ng-show="namespace.hasModifyPermission && !config.covered">
</td> </td>
...@@ -712,19 +712,19 @@ ...@@ -712,19 +712,19 @@
<thead> <thead>
<tr> <tr>
<th> <th>
{{'Component.Namespace.Master.Items.Body.HistoryView.ItemType | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.ItemType' | translate }}
</th> </th>
<th> <th>
{{'Component.Namespace.Master.Items.Body.HistoryView.ItemKey | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.ItemKey' | translate }}
</th> </th>
<th> <th>
{{'Component.Namespace.Master.Items.Body.HistoryView.ItemOldValue | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.ItemOldValue' | translate }}
</th> </th>
<th> <th>
{{'Component.Namespace.Master.Items.Body.HistoryView.ItemNewValue | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.ItemNewValue' | translate }}
</th> </th>
<th> <th>
{{'Component.Namespace.Master.Items.Body.HistoryView.ItemComment | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.ItemComment' | translate }}
</th> </th>
</tr> </tr>
</thead> </thead>
...@@ -732,17 +732,17 @@ ...@@ -732,17 +732,17 @@
<!--兼容老数据,不显示item类型为空行和注释的item--> <!--兼容老数据,不显示item类型为空行和注释的item-->
<tr ng-repeat="item in commits.changeSets.createItems" ng-show="item.key"> <tr ng-repeat="item in commits.changeSets.createItems" ng-show="item.key">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Master.Items.Body.HistoryView.NewAdded | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.NewAdded' | translate }}
</td> </td>
<td width="20%" title="{{item.key}}"> <td width="20%" title="{{item.key}}">
<span ng-bind="item.key | limitTo: 250"></span> <span ng-bind="item.key | limitTo: 250"></span>
<span ng-bind="item.key.length > 250 ? '...' :''"></span> <span ng-bind="item.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%"> <td width="28%">
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.value}}" <td width="28%" class="cursor-pointer" title="{{item.value}}"
ng-click="showText(item.value)"> ng-click="showText(item.value)">
<span ng-bind="item.value | limitTo: 250"></span> <span ng-bind="item.value | limitTo: 250"></span>
<span ng-bind="item.value.length > 250 ? '...': ''"></span> <span ng-bind="item.value.length > 250 ? '...': ''"></span>
...@@ -753,19 +753,19 @@ ...@@ -753,19 +753,19 @@
</td> </td>
</tr> </tr>
<tr ng-repeat="item in commits.changeSets.updateItems"> <tr ng-repeat="item in commits.changeSets.updateItems">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Master.Items.Body.HistoryView.Updated | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.Updated' | translate }}
</td> </td>
<td width="20%" title="{{item.newItem.key}}"> <td width="20%" title="{{item.newItem.key}}">
<span ng-bind="item.newItem.key | limitTo: 250"></span> <span ng-bind="item.newItem.key | limitTo: 250"></span>
<span ng-bind="item.newItem.key.length > 250 ? '...' :''"></span> <span ng-bind="item.newItem.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.oldItem.value}}" <td width="28%" class="cursor-pointer" title="{{item.oldItem.value}}"
ng-click="showText(item.oldItem.value)"> ng-click="showText(item.oldItem.value)">
<span ng-bind="item.oldItem.value | limitTo: 250"></span> <span ng-bind="item.oldItem.value | limitTo: 250"></span>
<span ng-bind="item.oldItem.value.length > 250 ? '...': ''"></span> <span ng-bind="item.oldItem.value.length > 250 ? '...': ''"></span>
</td> </td>
<td width="30%" class="cursor-pointer" title="{{item.newItem.value}}" <td width="28%" class="cursor-pointer" title="{{item.newItem.value}}"
ng-click="showText(item.newItem.value)"> ng-click="showText(item.newItem.value)">
<span ng-bind="item.newItem.value | limitTo: 250"></span> <span ng-bind="item.newItem.value | limitTo: 250"></span>
<span ng-bind="item.newItem.value.length > 250 ? '...': ''"></span> <span ng-bind="item.newItem.value.length > 250 ? '...': ''"></span>
...@@ -777,18 +777,18 @@ ...@@ -777,18 +777,18 @@
</tr> </tr>
<tr ng-repeat="item in commits.changeSets.deleteItems" <tr ng-repeat="item in commits.changeSets.deleteItems"
ng-show="item.key || item.comment"> ng-show="item.key || item.comment">
<td width="2%"> <td width="6%">
{{'Component.Namespace.Master.Items.Body.HistoryView.Deleted | translate }} {{'Component.Namespace.Master.Items.Body.HistoryView.Deleted' | translate }}
</td> </td>
<td width="20%" title="{{item.key}}"> <td width="20%" title="{{item.key}}">
<span ng-bind="item.key | limitTo: 250"></span> <span ng-bind="item.key | limitTo: 250"></span>
<span ng-bind="item.key.length > 250 ? '...' :''"></span> <span ng-bind="item.key.length > 250 ? '...' :''"></span>
</td> </td>
<td width="30%" title="{{item.value}}"> <td width="28%" title="{{item.value}}">
<span ng-bind="item.value | limitTo: 250"></span> <span ng-bind="item.value | limitTo: 250"></span>
<span ng-bind="item.value.length > 250 ? '...': ''"></span> <span ng-bind="item.value.length > 250 ? '...': ''"></span>
</td> </td>
<td width="30%"> <td width="28%">
</td> </td>
<td width="18%" title="{{item.comment}}"> <td width="18%" title="{{item.comment}}">
<span ng-bind="item.comment | limitTo: 250"></span> <span ng-bind="item.comment | limitTo: 250"></span>
...@@ -819,7 +819,7 @@ ...@@ -819,7 +819,7 @@
</div> </div>
<div class="text-center"> <div class="text-center">
<button type="button" class="btn btn-default" ng-show="!namespace.hasLoadAllCommit" <button type="button" class="btn btn-default" ng-show="!namespace.hasLoadAllCommit"
ng-click="loadCommitHistory(namespace)">{{'Component.Namespace.Master.Items.Body.HistoryView.LoadingMore' | translate }} ng-click="loadCommitHistory(namespace)">{{'Component.Namespace.Master.Items.Body.HistoryView.LoadMore' | translate }}
<span class="glyphicon glyphicon-menu-down"></span></button> <span class="glyphicon glyphicon-menu-down"></span></button>
</div> </div>
<div class="empty-container text-center" ng-show="!namespace.commits || !namespace.commits.length"> <div class="empty-container text-center" ng-show="!namespace.commits || !namespace.commits.length">
...@@ -903,7 +903,7 @@ ...@@ -903,7 +903,7 @@
<div class="row text-center" <div class="row text-center"
ng-show="namespace.latestReleaseInstances.content.length < namespace.latestReleaseInstances.total"> ng-show="namespace.latestReleaseInstances.content.length < namespace.latestReleaseInstances.total">
<button class="btn btn-default" <button class="btn btn-default"
ng-click="loadInstanceInfo(namespace)">{{'Component.Namespace.Master.Items.Body.Instance.LoadingMore' | translate }}</button> ng-click="loadInstanceInfo(namespace)">{{'Component.Namespace.Master.Items.Body.Instance.LoadMore' | translate }}</button>
</div> </div>
</div> </div>
...@@ -983,7 +983,7 @@ ...@@ -983,7 +983,7 @@
</table> </table>
<div class="row text-center" ng-show="namespace.allInstances.length < namespace.instancesCount"> <div class="row text-center" ng-show="namespace.allInstances.length < namespace.instancesCount">
<button class="btn btn-default" <button class="btn btn-default"
ng-click="loadInstanceInfo(namespace)">{{'Component.Namespace.Master.Items.Body.Instance.LoadingMore' | translate }}</button> ng-click="loadInstanceInfo(namespace)">{{'Component.Namespace.Master.Items.Body.Instance.LoadMore' | translate }}</button>
</div> </div>
</div> </div>
<div class="text-center" ng-if="namespace.instancesCount == 0"> <div class="text-center" ng-if="namespace.instancesCount == 0">
......
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<span class="label label-info" <span class="label label-info"
ng-if="config.isModified && config.oldValue && !config.isDeleted" ng-if="config.isModified && config.oldValue && !config.isDeleted"
data-tooltip="tooltip" data-placement="bottom" data-tooltip="tooltip" data-placement="bottom"
title="{{'Component.Publish.ModifedTips' | translate }}">{{'Component.Publish.Modifed' | translate }}</span> title="{{'Component.Publish.ModifiedTips' | translate }}">{{'Component.Publish.Modified' | translate }}</span>
<span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip" <span class="label label-danger" ng-if="config.isDeleted" data-tooltip="tooltip"
data-placement="bottom" data-placement="bottom"
title="{{'Component.Publish.DeletedTips' | translate }}">{{'Component.Publish.Deleted' | translate }}</span> title="{{'Component.Publish.DeletedTips' | translate }}">{{'Component.Publish.Deleted' | translate }}</span>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
aria-hidden="true">&times;</span></button> aria-hidden="true">&times;</span></button>
<div class="modal-title text-center"> <div class="modal-title text-center">
<span style="font-size: 18px;" ng-bind="toRollbackNamespace.firstRelease.name"></span> <span style="font-size: 18px;" ng-bind="toRollbackNamespace.firstRelease.name"></span>
<span style="font-size: 18px;"> &nbsp;{{'Component.Rollback.Goto' | translate }}&nbsp;</span> <span style="font-size: 18px;"> &nbsp;{{'Component.Rollback.To' | translate }}&nbsp;</span>
<span style="font-size: 18px;" ng-bind="toRollbackNamespace.secondRelease.name"></span> <span style="font-size: 18px;" ng-bind="toRollbackNamespace.secondRelease.name"></span>
</div> </div>
</div> </div>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="alert alert-warning" role="alert"> <div class="alert alert-warning" role="alert">
{{'Component.Rollback.Tips' | translate }} {{'Component.Rollback.Tips' | translate }}
<a target="_blank" <a target="_blank"
href="/config/history.html?#/appid={{appId}}&env={{env}}&clusterName={{toRollbackNamespace.baseInfo.clusterName}}&namespaceName={{toRollbackNamespace.baseInfo.namespaceName}}">点击查看</a> href="/config/history.html?#/appid={{appId}}&env={{env}}&clusterName={{toRollbackNamespace.baseInfo.clusterName}}&namespaceName={{toRollbackNamespace.baseInfo.namespaceName}}">{{'Component.Rollback.ClickToView' | translate }}</a>
</div> </div>
<div class="form-group" style="margin-top: 15px;"> <div class="form-group" style="margin-top: 15px;">
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<span <span
ng-show="change.type == 'ADDED'">{{'Component.Rollback.Added' | translate }}</span> ng-show="change.type == 'ADDED'">{{'Component.Rollback.Added' | translate }}</span>
<span <span
ng-show="change.type == 'MODIFIED'">{{'Component.Rollback.Modifed' | translate }}</span> ng-show="change.type == 'MODIFIED'">{{'Component.Rollback.Modified' | translate }}</span>
<span <span
ng-show="change.type == 'DELETED'">{{'Component.Rollback.Deleted' | translate }}</span> ng-show="change.type == 'DELETED'">{{'Component.Rollback.Deleted' | translate }}</span>
</td> </td>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment