fix: Fix GB/MB unit to GiB/MiB
1. Fix size unit to GiB/MiB for volume/snapshot/backup/image/flavor/monitor 2. Update i18n for Zun Change-Id: I97bc881b438c9922a2123c36b7e8ea40e5307fd2
This commit is contained in:
parent
1bb2c20d26
commit
eae1e27256
@ -181,7 +181,7 @@ export default class InstanceVolume extends React.Component {
|
||||
<Col span={14}>
|
||||
<span className={styles.label}>{t('Size')}</span>
|
||||
{input}
|
||||
<span className={styles['size-label']}>GB</span>
|
||||
<span className={styles['size-label']}>GiB</span>
|
||||
{checkbox}
|
||||
</Col>
|
||||
</Row>
|
||||
|
@ -86,7 +86,7 @@ export default class index extends Component {
|
||||
<>
|
||||
<span className={styles.cpu}>{t('CPU(Core)')}</span>
|
||||
<InputNumber value={cpu} onChange={this.onCpuChange} {...config} />
|
||||
<span className={styles.ram}>{t('RAM(MB)')}</span>
|
||||
<span className={styles.ram}>{t('RAM(MiB)')}</span>
|
||||
<InputNumber value={ram} onChange={this.onRamChange} {...config} />
|
||||
</>
|
||||
);
|
||||
|
@ -29,15 +29,21 @@ export default class ZunVolume extends React.Component {
|
||||
this.state = {
|
||||
type: [],
|
||||
source: [],
|
||||
destination: "",
|
||||
destination: '',
|
||||
cinderVolumeSize: 0,
|
||||
isCinderVolume: false
|
||||
isCinderVolume: false,
|
||||
};
|
||||
}
|
||||
|
||||
static getDerivedStateFromProps(nextProps, prevState) {
|
||||
const { type, source, cinderVolumeSize, destination } = nextProps.value || {};
|
||||
if (type !== prevState.type || source !== prevState.source || cinderVolumeSize !== prevState.cinderVolumeSize || destination !== prevState.destination) {
|
||||
const { type, source, cinderVolumeSize, destination } =
|
||||
nextProps.value || {};
|
||||
if (
|
||||
type !== prevState.type ||
|
||||
source !== prevState.source ||
|
||||
cinderVolumeSize !== prevState.cinderVolumeSize ||
|
||||
destination !== prevState.destination
|
||||
) {
|
||||
return {
|
||||
type,
|
||||
source,
|
||||
@ -56,19 +62,15 @@ export default class ZunVolume extends React.Component {
|
||||
};
|
||||
|
||||
onTypeChange = (value) => {
|
||||
if (value === "cinder-new") {
|
||||
this.setState(
|
||||
{
|
||||
isCinderVolume: true,
|
||||
},
|
||||
);
|
||||
if (value === 'cinder-new') {
|
||||
this.setState({
|
||||
isCinderVolume: true,
|
||||
});
|
||||
}
|
||||
if (value === "cinder-available") {
|
||||
this.setState(
|
||||
{
|
||||
isCinderVolume: false,
|
||||
},
|
||||
);
|
||||
if (value === 'cinder-available') {
|
||||
this.setState({
|
||||
isCinderVolume: false,
|
||||
});
|
||||
}
|
||||
this.onChange({
|
||||
...this.state,
|
||||
@ -86,25 +88,20 @@ export default class ZunVolume extends React.Component {
|
||||
onCinderVolumeSizeChange = (e) => {
|
||||
this.onChange({
|
||||
...this.state,
|
||||
cinderVolumeSize: e
|
||||
cinderVolumeSize: e,
|
||||
});
|
||||
};
|
||||
|
||||
onDestinationChange = (e) => {
|
||||
this.onChange({
|
||||
...this.state,
|
||||
destination: e.target.value
|
||||
destination: e.target.value,
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const {
|
||||
type,
|
||||
source,
|
||||
destination,
|
||||
cinderVolumeSize,
|
||||
isCinderVolume
|
||||
} = this.state;
|
||||
const { type, source, destination, cinderVolumeSize, isCinderVolume } =
|
||||
this.state;
|
||||
const { name } = this.props;
|
||||
const selectType = (
|
||||
<Select
|
||||
@ -142,9 +139,7 @@ export default class ZunVolume extends React.Component {
|
||||
);
|
||||
|
||||
return (
|
||||
<Form.Item
|
||||
className={styles['zun-volume']}
|
||||
name={name}>
|
||||
<Form.Item className={styles['zun-volume']} name={name}>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<span className={styles.label}>{t('Type')}</span>
|
||||
@ -155,7 +150,7 @@ export default class ZunVolume extends React.Component {
|
||||
{selectSource}
|
||||
</Col>
|
||||
<Col span={8} hidden={!isCinderVolume}>
|
||||
<span className={styles.label}>{t('Size(GB)')}</span>
|
||||
<span className={styles.label}>{t('Size(GiB)')}</span>
|
||||
{inputSize}
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
|
@ -20,6 +20,7 @@
|
||||
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number and one special character.": "8 to 16 characters, at least one uppercase letter, one lowercase letter, one number and one special character.",
|
||||
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number.": "8 to 16 characters, at least one uppercase letter, one lowercase letter, one number.",
|
||||
"A DNAT rule has been created for this port of this IP, please choose another port.": "A DNAT rule has been created for this port of this IP, please choose another port.",
|
||||
"A command that will be sent to the container": "A command that will be sent to the container",
|
||||
"A container with the same name already exists": "A container with the same name already exists",
|
||||
"A dynamic scheduling algorithm that estimates the server load based on the number of currently active connections. The system allocates new connection requests to the server with the least number of current connections. Commonly used for long connection services, such as database connections and other services.": "A dynamic scheduling algorithm that estimates the server load based on the number of currently active connections. The system allocates new connection requests to the server with the least number of current connections. Commonly used for long connection services, such as database connections and other services.",
|
||||
"A host aggregate can be associated with at most one AZ. Once the association is established, the AZ cannot be disassociated.": "A host aggregate can be associated with at most one AZ. Once the association is established, the AZ cannot be disassociated.",
|
||||
@ -56,6 +57,7 @@
|
||||
"Add Access Rule": "Add Access Rule",
|
||||
"Add Custom Metadata": "Add Custom Metadata",
|
||||
"Add Data Disks": "Add Data Disks",
|
||||
"Add Environment Variable": "Add Environment Variable",
|
||||
"Add External Members": "Add External Members",
|
||||
"Add Extra Info": "Add Extra Info",
|
||||
"Add Extra Spec": "Add Extra Spec",
|
||||
@ -73,6 +75,7 @@
|
||||
"Additional Labels": "Additional Labels",
|
||||
"Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)": "Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)",
|
||||
"Additional routes announced to the instance, one entry per line(e.g. {ip})": "Additional routes announced to the instance, one entry per line(e.g. {ip})",
|
||||
"Addresses": "Addresses",
|
||||
"Admin": "Admin",
|
||||
"Admin State": "Admin State",
|
||||
"Admin Status": "Admin Status",
|
||||
@ -112,6 +115,7 @@
|
||||
"Allocation Pools": "Allocation Pools",
|
||||
"Allowed Address Pair": "Allowed Address Pair",
|
||||
"Allowed Host": "Allowed Host",
|
||||
"Always": "Always",
|
||||
"American Samoa": "American Samoa",
|
||||
"An object with the same name already exists": "An object with the same name already exists",
|
||||
"Andorra": "Andorra",
|
||||
@ -167,8 +171,10 @@
|
||||
"Auth Algorithm": "Auth Algorithm",
|
||||
"Auth Key": "Auth Key",
|
||||
"Auto": "Auto",
|
||||
"Auto Heal": "Auto Heal",
|
||||
"Auto Healing": "Auto Healing",
|
||||
"Auto Inspect": "Auto Inspect",
|
||||
"Auto Remove": "Auto Remove",
|
||||
"Auto Scaling": "Auto Scaling",
|
||||
"Auto allocate mac address": "Auto allocate mac address",
|
||||
"Auto scaling feature will be enabled": "Auto scaling feature will be enabled",
|
||||
@ -283,9 +289,10 @@
|
||||
"Cancel Select": "Cancel Select",
|
||||
"Cancel Transfer": "Cancel Transfer",
|
||||
"Cancel upload successfully.": "Cancel upload successfully.",
|
||||
"Capacity (GB)": "Capacity (GB)",
|
||||
"Capacity (GiB)": "Capacity (GiB)",
|
||||
"Cape Verde": "Cape Verde",
|
||||
"Capsules": "Capsules",
|
||||
"Capsules Detail": "Capsules Detail",
|
||||
"Cast Rules To Read Only": "Cast Rules To Read Only",
|
||||
"Category": "Category",
|
||||
"Cayman Islands": "Cayman Islands",
|
||||
@ -359,6 +366,7 @@
|
||||
"Code": "Code",
|
||||
"Cold Migrate": "Cold Migrate",
|
||||
"Colombia": "Colombia",
|
||||
"Command": "Command",
|
||||
"Commas ‘,’ are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "Commas ‘,’ are not allowed to be in a tag name in order to simplify requests that specify lists of tags",
|
||||
"Commit Latency(ms)": "Commit Latency(ms)",
|
||||
"Common Server": "Common Server",
|
||||
@ -392,7 +400,7 @@
|
||||
"Configuration Group Name": "Configuration Group Name",
|
||||
"Configuration Groups": "Configuration Groups",
|
||||
"Configuration Update": "Configuration Update",
|
||||
"Configured Memory (GB)": "Configured Memory (GB)",
|
||||
"Configured Memory (GiB)": "Configured Memory (GiB)",
|
||||
"Confirm": "Confirm",
|
||||
"Confirm Config": "Confirm Config",
|
||||
"Confirm Password": "Confirm Password",
|
||||
@ -411,10 +419,11 @@
|
||||
"Container": "Container",
|
||||
"Container Detail": "Container Detail",
|
||||
"Container Format": "Container Format",
|
||||
"Container Infra": "Container Infra",
|
||||
"Container Name": "Container Name",
|
||||
"Container Orchestration Engine": "Container Orchestration Engine",
|
||||
"Container Version": "Container Version",
|
||||
"Containers": "Containers",
|
||||
"Containers Detail": "Containers Detail",
|
||||
"Content": "Content",
|
||||
"Content Type": "Content Type",
|
||||
"Control Location": "Control Location",
|
||||
@ -433,12 +442,15 @@
|
||||
"Create Backups": "Create Backups",
|
||||
"Create Bandwidth Limit Rule": "Create Bandwidth Limit Rule",
|
||||
"Create Bare Metal Node": "Create Bare Metal Node",
|
||||
"Create Capsule": "Create Capsule",
|
||||
"Create Capsules": "Create Capsules",
|
||||
"Create Certificate": "Create Certificate",
|
||||
"Create Cluster": "Create Cluster",
|
||||
"Create Cluster Template": "Create Cluster Template",
|
||||
"Create Complete": "Create Complete",
|
||||
"Create Configurations": "Create Configurations",
|
||||
"Create Container": "Create Container",
|
||||
"Create Container (Step)": "Create Container (Step)",
|
||||
"Create DNAT Rule": "Create DNAT Rule",
|
||||
"Create DNAT rule": "Create DNAT rule",
|
||||
"Create DSCP Marking Rule": "Create DSCP Marking Rule",
|
||||
@ -585,6 +597,7 @@
|
||||
"Delete Backup": "Delete Backup",
|
||||
"Delete Bandwidth Egress Rules": "Delete Bandwidth Egress Rules",
|
||||
"Delete Bandwidth Ingress Rules": "Delete Bandwidth Ingress Rules",
|
||||
"Delete Capsules": "Delete Capsules",
|
||||
"Delete Certificate": "Delete Certificate",
|
||||
"Delete Clusters": "Delete Clusters",
|
||||
"Delete Clusters Templates": "Delete Clusters Templates",
|
||||
@ -659,6 +672,7 @@
|
||||
"Deployment Parameters": "Deployment Parameters",
|
||||
"Description": "Description",
|
||||
"Dest Folder": "Dest Folder",
|
||||
"Destination": "Destination",
|
||||
"Destination CIDR": "Destination CIDR",
|
||||
"Destination Port/Port Range": "Destination Port/Port Range",
|
||||
"Detach": "Detach",
|
||||
@ -696,13 +710,14 @@
|
||||
"Disk Format": "Disk Format",
|
||||
"Disk Info": "Disk Info",
|
||||
"Disk Tag": "Disk Tag",
|
||||
"Disk allocation (GB)": "Disk allocation (GB)",
|
||||
"Disk allocation (GiB)": "Disk allocation (GiB)",
|
||||
"Disk size is limited by the min disk of flavor, image, etc.": "Disk size is limited by the min disk of flavor, image, etc.",
|
||||
"Djibouti": "Djibouti",
|
||||
"Do Build And Run Instance": "Do Build And Run Instance",
|
||||
"Do HH:mm": "Do HH:mm",
|
||||
"Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.": "Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.",
|
||||
"Do not set with a backend": "Do not set with a backend",
|
||||
"Docker": "Docker",
|
||||
"Docker Storage Driver": "Docker Storage Driver",
|
||||
"Docker Swarm": "Docker Swarm",
|
||||
"Docker Swarm Mode": "Docker Swarm Mode",
|
||||
@ -796,7 +811,9 @@
|
||||
"Enable Registry": "Enable Registry",
|
||||
"Enable Service": "Enable Service",
|
||||
"Enable User": "Enable User",
|
||||
"Enable auto heal": "Enable auto heal",
|
||||
"Enable compute host": "Enable compute host",
|
||||
"Enable interactive mode": "Enable interactive mode",
|
||||
"Enabled": "Enabled",
|
||||
"Enabled Load Balancer for Master Nodes": "Enabled Load Balancer for Master Nodes",
|
||||
"Enabled Network": "Enabled Network",
|
||||
@ -814,8 +831,10 @@
|
||||
"Enter an integer value between 1 and 65535.": "Enter an integer value between 1 and 65535.",
|
||||
"Enter query conditions to filter": "Enter query conditions to filter",
|
||||
"Entered: {length, plural, =1 {one character} other {# characters} }(maximum {maxCount} characters)": "Entered: {length, plural, =1 {one character} other {# characters} }(maximum {maxCount} characters)",
|
||||
"Environment": "Environment",
|
||||
"Environment Variable": "Environment Variable",
|
||||
"Ephemeral Disk(GB)": "Ephemeral Disk(GB)",
|
||||
"Environment Variables": "Environment Variables",
|
||||
"Ephemeral Disk(GiB)": "Ephemeral Disk(GiB)",
|
||||
"Equatorial Guinea": "Equatorial Guinea",
|
||||
"Eritrea": "Eritrea",
|
||||
"Error": "Error",
|
||||
@ -828,6 +847,7 @@
|
||||
"Event Time": "Event Time",
|
||||
"Evictions": "Evictions",
|
||||
"Execution Result": "Execution Result",
|
||||
"Exit Policy": "Exit Policy",
|
||||
"Expand Advanced Options": "Expand Advanced Options",
|
||||
"Expired Time": "Expired Time",
|
||||
"Expires At": "Expires At",
|
||||
@ -947,6 +967,7 @@
|
||||
"Gibraltar": "Gibraltar",
|
||||
"Gigabytes(GB)": "Gigabytes(GB)",
|
||||
"Given IP": "Given IP",
|
||||
"Glance": "Glance",
|
||||
"Global Setting": "Global Setting",
|
||||
"GlusterFS": "GlusterFS",
|
||||
"Greece": "Greece",
|
||||
@ -1064,10 +1085,12 @@
|
||||
"Image & OS": "Image & OS",
|
||||
"Image Backup": "Image Backup",
|
||||
"Image Detail": "Image Detail",
|
||||
"Image Driver": "Image Driver",
|
||||
"Image ID": "Image ID",
|
||||
"Image Info": "Image Info",
|
||||
"Image Name": "Image Name",
|
||||
"Image Pending Upload": "Image Pending Upload",
|
||||
"Image Pull Policy": "Image Pull Policy",
|
||||
"Image Size": "Image Size",
|
||||
"Image Snapshot Pending": "Image Snapshot Pending",
|
||||
"Image Uploading": "Image Uploading",
|
||||
@ -1143,6 +1166,7 @@
|
||||
"Instances": "Instances",
|
||||
"Instances \"{ name }\" are locked, can not delete them.": "Instances \"{ name }\" are locked, can not delete them.",
|
||||
"Insufficient {name} quota to create resources(left { quota }, input { input }).": "Insufficient {name} quota to create resources(left { quota }, input { input }).",
|
||||
"Interactive": "Interactive",
|
||||
"Interface": "Interface",
|
||||
"Interface Info": "Interface Info",
|
||||
"Interface Name:": "Interface Name:",
|
||||
@ -1245,6 +1269,7 @@
|
||||
"Liechtenstein": "Liechtenstein",
|
||||
"Lifetime": "Lifetime",
|
||||
"Lifetime Value": "Lifetime Value",
|
||||
"Links": "Links",
|
||||
"Listener": "Listener",
|
||||
"Listener Connection Limit": "Listener Connection Limit",
|
||||
"Listener Description": "Listener Description",
|
||||
@ -1260,6 +1285,7 @@
|
||||
"Load Balancer Detail": "Load Balancer Detail",
|
||||
"Load Balancer Name": "Load Balancer Name",
|
||||
"Load Balancers": "Load Balancers",
|
||||
"Load Template from a file": "Load Template from a file",
|
||||
"Load from local files": "Load from local files",
|
||||
"LoadBalancers Instances": "LoadBalancers Instances",
|
||||
"Local": "Local",
|
||||
@ -1335,6 +1361,7 @@
|
||||
"Max BandWidth": "Max BandWidth",
|
||||
"Max Burst": "Max Burst",
|
||||
"Max Retries": "Max Retries",
|
||||
"Max Retry": "Max Retry",
|
||||
"Max connect": "Max connect",
|
||||
"Maximum interval time for each health check response": "Maximum interval time for each health check response",
|
||||
"Mayotte": "Mayotte",
|
||||
@ -1350,7 +1377,7 @@
|
||||
"Memory Page": "Memory Page",
|
||||
"Memory Page Size": "Memory Page Size",
|
||||
"Memory Usage": "Memory Usage",
|
||||
"Memory usage Num (GB)": "Memory usage Num (GB)",
|
||||
"Memory usage Num (GiB)": "Memory usage Num (GiB)",
|
||||
"Mesos": "Mesos",
|
||||
"Message": "Message",
|
||||
"Message Details": "Message Details",
|
||||
@ -1366,9 +1393,9 @@
|
||||
"Migrating": "Migrating",
|
||||
"Migrating To": "Migrating To",
|
||||
"Min Memory": "Min Memory",
|
||||
"Min Memory(GB)": "Min Memory(GB)",
|
||||
"Min Memory(GiB)": "Min Memory(GiB)",
|
||||
"Min System Disk": "Min System Disk",
|
||||
"Min System Disk(GB)": "Min System Disk(GB)",
|
||||
"Min System Disk(GiB)": "Min System Disk(GiB)",
|
||||
"Min size": "Min size",
|
||||
"Min. Disk": "Min. Disk",
|
||||
"Min. RAM": "Min. RAM",
|
||||
@ -1406,6 +1433,7 @@
|
||||
"NUMA Nodes": "NUMA Nodes",
|
||||
"Name": "Name",
|
||||
"Name can not be duplicated": "Name can not be duplicated",
|
||||
"Name or ID og the container image": "Name or ID og the container image",
|
||||
"Namespace": "Namespace",
|
||||
"Namibia": "Namibia",
|
||||
"Nauru": "Nauru",
|
||||
@ -1504,6 +1532,7 @@
|
||||
"Offline": "Offline",
|
||||
"Oman": "Oman",
|
||||
"On": "On",
|
||||
"On failure": "On failure",
|
||||
"One entry per line(e.g. 114.114.114.114)": "One entry per line(e.g. 114.114.114.114)",
|
||||
"One entry per line(e.g. {ip})": "One entry per line(e.g. {ip})",
|
||||
"One-way authentication": "One-way authentication",
|
||||
@ -1564,6 +1593,7 @@
|
||||
"Paste File": "Paste File",
|
||||
"Path": "Path",
|
||||
"Pause": "Pause",
|
||||
"Pause Container": "Pause Container",
|
||||
"Pause Instance": "Pause Instance",
|
||||
"Paused": "Paused",
|
||||
"Pausing": "Pausing",
|
||||
@ -1655,6 +1685,7 @@
|
||||
"Please select item!": "Please select item!",
|
||||
"Please select key": "Please select key",
|
||||
"Please select policy": "Please select policy",
|
||||
"Please select source": "Please select source",
|
||||
"Please select type": "Please select type",
|
||||
"Please select volume type": "Please select volume type",
|
||||
"Please select your Domain!": "Please select your Domain!",
|
||||
@ -1763,12 +1794,12 @@
|
||||
"Quota: Insufficient quota to create resources, please adjust resource quantity or quota(left { quota }, input { input }).": "Quota: Insufficient quota to create resources, please adjust resource quantity or quota(left { quota }, input { input }).",
|
||||
"Quota: Project quotas sufficient resources can be created": "Quota: Project quotas sufficient resources can be created",
|
||||
"RAM": "RAM",
|
||||
"RAM(MB)": "RAM(MB)",
|
||||
"RAM(MiB)": "RAM(MiB)",
|
||||
"RAW - Raw disk image format": "RAW - Raw disk image format",
|
||||
"ROUND_ROBIN": "Round Robin",
|
||||
"RSVP": "RSVP",
|
||||
"Raid Interface": "Raid Interface",
|
||||
"Ram Size(GB)": "Ram Size(GB)",
|
||||
"Ram Size(GiB)": "Ram Size(GiB)",
|
||||
"Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ",
|
||||
"Ramdisk ID": "Ramdisk ID",
|
||||
"Ramdisk Image": "Ramdisk Image",
|
||||
@ -1780,6 +1811,7 @@
|
||||
"Reason": "Reason",
|
||||
"Reason: ": "Reason: ",
|
||||
"Reboot": "Reboot",
|
||||
"Reboot Container": "Reboot Container",
|
||||
"Reboot Instance": "Reboot Instance",
|
||||
"Rebooting": "Rebooting",
|
||||
"Rebuild": "Rebuild",
|
||||
@ -1834,6 +1866,7 @@
|
||||
"Resource Type": "Resource Type",
|
||||
"Resource Types": "Resource Types",
|
||||
"Resources Synced": "Resources Synced",
|
||||
"Restart Policy": "Restart Policy",
|
||||
"Restore Backup": "Restore Backup",
|
||||
"Restore backup": "Restore backup",
|
||||
"Restore from snapshot": "Restore from snapshot",
|
||||
@ -1845,6 +1878,7 @@
|
||||
"Resume In Progress": "Resume In Progress",
|
||||
"Resume Instance": "Resume Instance",
|
||||
"Resuming": "Resuming",
|
||||
"Retry times for 'Restart on failure' policy": "Retry times for 'Restart on failure' policy",
|
||||
"Retyping": "Retyping",
|
||||
"Reunion": "Reunion",
|
||||
"Revert Resize or Migrate": "Revert Resize or Migrate",
|
||||
@ -1875,6 +1909,7 @@
|
||||
"Running": "Running",
|
||||
"Running Threads": "Running Threads",
|
||||
"Running Time": "Running Time",
|
||||
"Runtime": "Runtime",
|
||||
"Russia": "Russia",
|
||||
"Rwanda": "Rwanda",
|
||||
"SCTP": "SCTP",
|
||||
@ -1890,6 +1925,7 @@
|
||||
"Sao Tome and Principe": "Sao Tome and Principe",
|
||||
"Saudi Arabia": "Saudi Arabia",
|
||||
"Saving": "Saving",
|
||||
"Scheduler Hints": "Scheduler Hints",
|
||||
"Scheduling": "Scheduling",
|
||||
"Sec for DPD delay, > 0": "Sec for DPD delay, > 0",
|
||||
"Sec for DPD timeout, > 0 & > DPD Interval": "Sec for DPD timeout, > 0 & > DPD Interval",
|
||||
@ -1986,6 +2022,7 @@
|
||||
"Size": "Size",
|
||||
"Size (GB)": "Size (GB)",
|
||||
"Size of image to launch": "Size of image to launch",
|
||||
"Size(GiB)": "Size(GiB)",
|
||||
"Size: *": "Size: *",
|
||||
"Slovakia (Slovak Republic)": "Slovakia (Slovak Republic)",
|
||||
"Slovenia": "Slovenia",
|
||||
@ -2014,12 +2051,14 @@
|
||||
"Solomon Islands": "Solomon Islands",
|
||||
"Somalia": "Somalia",
|
||||
"Sorry, the page you visited does not exist.": "Sorry, the page you visited does not exist.",
|
||||
"Source": "Source",
|
||||
"Source Path: {path}": "Source Path: {path}",
|
||||
"Source Port/Port Range": "Source Port/Port Range",
|
||||
"South Africa": "South Africa",
|
||||
"South Korea": "South Korea",
|
||||
"Spain": "Spain",
|
||||
"Spawning": "Spawning",
|
||||
"Spec": "Spec",
|
||||
"Specification": "Specification",
|
||||
"Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.": "Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.",
|
||||
"Specs": "Specs",
|
||||
@ -2038,6 +2077,7 @@
|
||||
"Stand Alone Ports Supported": "Stand Alone Ports Supported",
|
||||
"Standard Trait": "Standard Trait",
|
||||
"Start": "Start",
|
||||
"Start Container": "Start Container",
|
||||
"Start Instance": "Start Instance",
|
||||
"Start Source": "Start Source",
|
||||
"Start Source Name": "Start Source Name",
|
||||
@ -2050,8 +2090,10 @@
|
||||
"Static Routes": "Static Routes",
|
||||
"Status": "Status",
|
||||
"Status Code": "Status Code",
|
||||
"Status Detail": "Status Detail",
|
||||
"Status Reason": "Status Reason",
|
||||
"Stop": "Stop",
|
||||
"Stop Container": "Stop Container",
|
||||
"Stop Instance": "Stop Instance",
|
||||
"Stop auto refreshing data": "Stop auto refreshing data",
|
||||
"Stop refreshing data every {num} seconds": "Stop refreshing data every {num} seconds",
|
||||
@ -2122,6 +2164,7 @@
|
||||
"Target IP Address": "Target IP Address",
|
||||
"Target Port": "Target Port",
|
||||
"Target Storage Backend": "Target Storage Backend",
|
||||
"Task State": "Task State",
|
||||
"Template Content": "Template Content",
|
||||
"Template Name": "Template Name",
|
||||
"Thailand": "Thailand",
|
||||
@ -2136,16 +2179,19 @@
|
||||
"The amphora instance is required for load balancing service setup and is not recommended": "The amphora instance is required for load balancing service setup and is not recommended",
|
||||
"The associated floating IP, virtual adapter, volume and other resources will be automatically disassociated.": "The associated floating IP, virtual adapter, volume and other resources will be automatically disassociated.",
|
||||
"The certificate contains information such as the public key and signature of the certificate. The extension of the certificate is \"pem\" or \"crt\", you can directly enter certificate content or upload certificate file.": "The certificate contains information such as the public key and signature of the certificate. The extension of the certificate is \"pem\" or \"crt\", you can directly enter certificate content or upload certificate file.",
|
||||
"The container memory size in MiB": "The container memory size in MiB",
|
||||
"The creation instruction has been issued, please refresh to see the actual situation in the list.": "The creation instruction has been issued, please refresh to see the actual situation in the list.",
|
||||
"The creation instruction was issued successfully, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "The creation instruction was issued successfully, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.",
|
||||
"The current operation can be performed when the instance is online:": "The current operation can be performed when the instance is online:",
|
||||
"The current operation requires the instance to be shut down:": "The current operation requires the instance to be shut down:",
|
||||
"The description can be up to 255 characters long.": "The description can be up to 255 characters long.",
|
||||
"The disk size in GİB for per container": "The disk size in GİB for per container",
|
||||
"The domain name can only be composed of letters, numbers, dashes, in A dash cannot be at the beginning or end, and a single string cannot exceed more than 63 characters, separated by dots; At most can support 30 domain names, separated by commas;The length of a single domain name does not exceed 100 characters, and the total length degree does not exceed 1024 characters.": "The domain name can only be composed of letters, numbers, dashes, in A dash cannot be at the beginning or end, and a single string cannot exceed more than 63 characters, separated by dots; At most can support 30 domain names, separated by commas;The length of a single domain name does not exceed 100 characters, and the total length degree does not exceed 1024 characters.",
|
||||
"The entire inspection process takes 5 to 10 minutes, so you need to be patient. After the registration is completed, the node configuration status will return to the manageable status.": "The entire inspection process takes 5 to 10 minutes, so you need to be patient. After the registration is completed, the node configuration status will return to the manageable status.",
|
||||
"The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.": "The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.",
|
||||
"The file with the same name will be overwritten.": "The file with the same name will be overwritten.",
|
||||
"The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.",
|
||||
"The host name of this container": "The host name of this container",
|
||||
"The http_proxy address to use for nodes in cluster": "The http_proxy address to use for nodes in cluster",
|
||||
"The https_proxy address to use for nodes in cluster": "The https_proxy address to use for nodes in cluster",
|
||||
"The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ": "The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ",
|
||||
@ -2174,6 +2220,7 @@
|
||||
"The new password cannot be identical to the current password.": "The new password cannot be identical to the current password.",
|
||||
"The no_proxy address to use for nodes in cluster": "The no_proxy address to use for nodes in cluster",
|
||||
"The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.": "The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.",
|
||||
"The number of virtual cpu for this container": "The number of virtual cpu for this container",
|
||||
"The password must not be the same as the previous": "The password must not be the same as the previous",
|
||||
"The password must not be the same as the previous two": "The password must not be the same as the previous two",
|
||||
"The password must not be the same as the previous {num}": "The password must not be the same as the previous {num}",
|
||||
@ -2183,6 +2230,7 @@
|
||||
"The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.": "The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.",
|
||||
"The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).": "The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).",
|
||||
"The root and os_admin are default users and cannot be created!": "The root and os_admin are default users and cannot be created!",
|
||||
"The runtime to create container with": "The runtime to create container with",
|
||||
"The security group is similar to the firewall function and is used to set up network access control. ": "The security group is similar to the firewall function and is used to set up network access control. ",
|
||||
"The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)": "The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)",
|
||||
"The selected VPC/ subnet does not have IPv6 enabled.": "The selected VPC/ subnet does not have IPv6 enabled.",
|
||||
@ -2203,6 +2251,7 @@
|
||||
"The volume status can be reset to in-use only when the previous status is in-use.": "The volume status can be reset to in-use only when the previous status is in-use.",
|
||||
"The volume type needs to be consistent with the volume type when the snapshot is created.": "The volume type needs to be consistent with the volume type when the snapshot is created.",
|
||||
"The volume type needs to set \"multiattach\" in the metadata to support shared volume attributes.": "The volume type needs to set \"multiattach\" in the metadata to support shared volume attributes.",
|
||||
"The working directory for commands to run in": "The working directory for commands to run in",
|
||||
"The {action} instruction has been issued, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "The {action} instruction has been issued, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.",
|
||||
"The {action} instruction has been issued. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "The {action} instruction has been issued. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.",
|
||||
"There are resources that cannot {action} in the selected resources, such as:": "There are resources that cannot {action} in the selected resources, such as:",
|
||||
@ -2248,6 +2297,7 @@
|
||||
"Two-way authentication": "Two-way authentication",
|
||||
"Type": "Type",
|
||||
"Type of datastore": "Type of datastore",
|
||||
"Type to Scheduler Hints and press enter": "Type to Scheduler Hints and press enter",
|
||||
"UDPLite": "UDPLite",
|
||||
"USB Info": "USB Info",
|
||||
"USB Parameters": "USB Parameters",
|
||||
@ -2278,6 +2328,7 @@
|
||||
"United Kingdom": "United Kingdom",
|
||||
"United States": "United States",
|
||||
"Unknown": "Unknown",
|
||||
"Unless Stopped": "Unless Stopped",
|
||||
"Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "Unless you know clearly which AZ to create the volume in, you don not need to fill in here.",
|
||||
"Unlimit": "Unlimit",
|
||||
"Unlock": "Unlock",
|
||||
@ -2286,6 +2337,7 @@
|
||||
"Unmanage Starting": "Unmanage Starting",
|
||||
"Unmanaged": "Unmanaged",
|
||||
"Unpause": "Unpause",
|
||||
"Unpause Container": "Unpause Container",
|
||||
"Unpause Instance": "Unpause Instance",
|
||||
"Unrescuing": "Unrescuing",
|
||||
"Unshelve": "Unshelve",
|
||||
@ -2403,6 +2455,7 @@
|
||||
"Volume Transfer": "Volume Transfer",
|
||||
"Volume Type": "Volume Type",
|
||||
"Volume Type Detail": "Volume Type Detail",
|
||||
"Volumes": "Volumes",
|
||||
"Wallis And Futuna Islands": "Wallis And Futuna Islands",
|
||||
"Warn": "Warn",
|
||||
"Warning": "Warning",
|
||||
@ -2421,6 +2474,8 @@
|
||||
"Which Network Interface provider to use when plumbing the network connections for this Node": "Which Network Interface provider to use when plumbing the network connections for this Node",
|
||||
"Windows": "Windows",
|
||||
"Work Num": "Work Num",
|
||||
"Workdir": "Workdir",
|
||||
"Working Directory": "Working Directory",
|
||||
"X86 Architecture": "X86 Architecture",
|
||||
"YAML File": "YAML File",
|
||||
"Yemen": "Yemen",
|
||||
@ -2464,6 +2519,7 @@
|
||||
"be soft rebooted": "be soft rebooted",
|
||||
"be started": "be started",
|
||||
"be stopped": "be stopped",
|
||||
"capsules": "capsules",
|
||||
"certificate": "certificate",
|
||||
"cidr": "CIDR",
|
||||
"cinder services": "cinder services",
|
||||
@ -2710,10 +2766,10 @@
|
||||
"vpn endpoint groups": "vpn endpoint groups",
|
||||
"vpn services": "vpn services",
|
||||
"write": "write",
|
||||
"{ size } GB": "{ size } GB",
|
||||
"{ size } KB": "{ size } KB",
|
||||
"{ size } MB": "{ size } MB",
|
||||
"{ size } TB": "{ size } TB",
|
||||
"{ size } GiB": "{ size } GiB",
|
||||
"{ size } KiB": "{ size } KiB",
|
||||
"{ size } MiB": "{ size } MiB",
|
||||
"{ size } TiB": "{ size } TiB",
|
||||
"{ size } bytes": "{ size } bytes",
|
||||
"{action} successfully, instance: {name}.": "{action} successfully, instance: {name}.",
|
||||
"{action} successfully.": "{action} successfully.",
|
||||
|
@ -20,6 +20,7 @@
|
||||
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number and one special character.": "8个到16个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符。",
|
||||
"8 to 16 characters, at least one uppercase letter, one lowercase letter, one number.": "8个到16个字符,至少一个大写字母,一个小写字母,一个数字。",
|
||||
"A DNAT rule has been created for this port of this IP, please choose another port.": "此IP的这个端口已经创建了DNAT规则,请选择另一个端口。",
|
||||
"A command that will be sent to the container": "将发送到容器的命令",
|
||||
"A container with the same name already exists": "已存在同名容器",
|
||||
"A dynamic scheduling algorithm that estimates the server load based on the number of currently active connections. The system allocates new connection requests to the server with the least number of current connections. Commonly used for long connection services, such as database connections and other services.": "通过当前活跃的连接数来估计服务器负载情况的一种动态调度算法,系统把新的连接请求分配给当前连接数目最少的服务器。常用于长连接服务,例如数据库连接等服务。",
|
||||
"A host aggregate can be associated with at most one AZ. Once the association is established, the AZ cannot be disassociated.": "一个主机集合最多可以与一个AZ建立关联,一旦建立了关联,无法再取消关联AZ。",
|
||||
@ -56,6 +57,7 @@
|
||||
"Add Access Rule": "添加访问规则",
|
||||
"Add Custom Metadata": "添加自定义元数据",
|
||||
"Add Data Disks": "添加数据盘",
|
||||
"Add Environment Variable": "添加环境变量",
|
||||
"Add External Members": "添加外部成员",
|
||||
"Add Extra Info": "添加额外信息",
|
||||
"Add Extra Spec": "添加额外规格",
|
||||
@ -73,6 +75,7 @@
|
||||
"Additional Labels": "附加标签",
|
||||
"Additional routes announced to the instance, one entry per line(e.g. 192.168.200.0/24,10.56.1.254)": "云主机额外路由,每行一条(例如: 192.168.200.0/24,10.56.1.254)",
|
||||
"Additional routes announced to the instance, one entry per line(e.g. {ip})": "云主机额外路由,每行一条(例如: {ip})",
|
||||
"Addresses": "地址",
|
||||
"Admin": "管理员",
|
||||
"Admin State": "管理状态",
|
||||
"Admin Status": "管理状态",
|
||||
@ -112,6 +115,7 @@
|
||||
"Allocation Pools": "分配地址池",
|
||||
"Allowed Address Pair": "可用地址对",
|
||||
"Allowed Host": "可用主机",
|
||||
"Always": "总是",
|
||||
"American Samoa": "萨摩亚",
|
||||
"An object with the same name already exists": "已存在同名对象",
|
||||
"Andorra": "安道尔共和国",
|
||||
@ -167,8 +171,10 @@
|
||||
"Auth Algorithm": "授权算法",
|
||||
"Auth Key": "密钥",
|
||||
"Auto": "自动",
|
||||
"Auto Heal": "自动修复",
|
||||
"Auto Healing": "自动修复",
|
||||
"Auto Inspect": "自动检测",
|
||||
"Auto Remove": "自动移除",
|
||||
"Auto Scaling": "自动缩放",
|
||||
"Auto allocate mac address": "自动分配MAC地址",
|
||||
"Auto scaling feature will be enabled": "将启用自动缩放功能",
|
||||
@ -283,9 +289,10 @@
|
||||
"Cancel Select": "取消选择",
|
||||
"Cancel Transfer": "取消云硬盘转让",
|
||||
"Cancel upload successfully.": "取消上传成功。",
|
||||
"Capacity (GB)": "容量(GB)",
|
||||
"Capacity (GiB)": "容量(GiB)",
|
||||
"Cape Verde": "佛得角",
|
||||
"Capsules": "Capsules",
|
||||
"Capsules Detail": "Capsules 详情",
|
||||
"Cast Rules To Read Only": "规则强制只读",
|
||||
"Category": "类别",
|
||||
"Cayman Islands": "开曼群岛",
|
||||
@ -359,6 +366,7 @@
|
||||
"Code": "编码",
|
||||
"Cold Migrate": "冷迁移",
|
||||
"Colombia": "哥伦比亚",
|
||||
"Command": "命令",
|
||||
"Commas ‘,’ are not allowed to be in a tag name in order to simplify requests that specify lists of tags": "标记名称中不允许使用英文逗号“,”,以简化指定标记列表的请求",
|
||||
"Commit Latency(ms)": "提交延迟(毫秒)",
|
||||
"Common Server": "云主机",
|
||||
@ -392,7 +400,7 @@
|
||||
"Configuration Group Name": "配置组名称",
|
||||
"Configuration Groups": "配置组",
|
||||
"Configuration Update": "配置变更",
|
||||
"Configured Memory (GB)": "已分配内存(GB)",
|
||||
"Configured Memory (GiB)": "已分配内存(GiB)",
|
||||
"Confirm": "确定",
|
||||
"Confirm Config": "确认配置",
|
||||
"Confirm Password": "确认密码",
|
||||
@ -411,10 +419,11 @@
|
||||
"Container": "容器集群",
|
||||
"Container Detail": "容器详情",
|
||||
"Container Format": "容器格式",
|
||||
"Container Infra": "容器基础设施",
|
||||
"Container Name": "容器名称",
|
||||
"Container Orchestration Engine": "容器编排引擎",
|
||||
"Container Version": "容器版本",
|
||||
"Containers": "容器",
|
||||
"Containers Detail": "容器详情",
|
||||
"Content": "内容",
|
||||
"Content Type": "内容类型",
|
||||
"Control Location": "控制端",
|
||||
@ -433,12 +442,15 @@
|
||||
"Create Backups": "创建备份",
|
||||
"Create Bandwidth Limit Rule": "创建带宽限制规则",
|
||||
"Create Bare Metal Node": "创建裸机节点",
|
||||
"Create Capsule": "创建 Capsule",
|
||||
"Create Capsules": "创建 Capsule",
|
||||
"Create Certificate": "创建证书",
|
||||
"Create Cluster": "创建集群",
|
||||
"Create Cluster Template": "创建集群模板",
|
||||
"Create Complete": "创建完成",
|
||||
"Create Configurations": "创建配置",
|
||||
"Create Container": "创建容器",
|
||||
"Create Container (Step)": "创建容器(步骤)",
|
||||
"Create DNAT Rule": "创建DNAT规则",
|
||||
"Create DNAT rule": "创建DNAT规则",
|
||||
"Create DSCP Marking Rule": "创建DSCP标记规则",
|
||||
@ -585,6 +597,7 @@
|
||||
"Delete Backup": "删除备份",
|
||||
"Delete Bandwidth Egress Rules": "删除带宽出方向限制",
|
||||
"Delete Bandwidth Ingress Rules": "删除带宽入方向限制",
|
||||
"Delete Capsules": "删除 Capsule",
|
||||
"Delete Certificate": "删除证书",
|
||||
"Delete Clusters": "删除集群",
|
||||
"Delete Clusters Templates": "删除集群模板",
|
||||
@ -659,6 +672,7 @@
|
||||
"Deployment Parameters": "部署参数",
|
||||
"Description": "描述",
|
||||
"Dest Folder": "目标文件夹",
|
||||
"Destination": "目的地",
|
||||
"Destination CIDR": "目的网络地址",
|
||||
"Destination Port/Port Range": "目的端口/端口范围",
|
||||
"Detach": "解绑",
|
||||
@ -696,13 +710,14 @@
|
||||
"Disk Format": "硬盘格式",
|
||||
"Disk Info": "硬盘信息",
|
||||
"Disk Tag": "硬盘标签",
|
||||
"Disk allocation (GB)": "云硬盘分配量 (GB)",
|
||||
"Disk allocation (GiB)": "云硬盘分配量 (GiB)",
|
||||
"Disk size is limited by the min disk of flavor, image, etc.": "根磁盘大小受云主机类型、镜像等的最小磁盘限制。",
|
||||
"Djibouti": "吉布提",
|
||||
"Do Build And Run Instance": "构建并运行实例",
|
||||
"Do HH:mm": "",
|
||||
"Do not reset the normally mounted volume to the \"available\"、\"maintenance\" or \"error\" status. The reset state does not remove the volume from the instance. If you need to remove the volume from the instance, please go to the console of the corresponding project and use the \"detach\" operation.": "请勿将正常的挂载中的云硬盘重置为“可用”、“维护”或”错误“状态。重置状态并不会将云硬盘从云主机上卸载下来。如果您需要将云硬盘从云主机上移除,请进入相应项目的控制台使用“解绑”操作。",
|
||||
"Do not set with a backend": "不设置后端",
|
||||
"Docker": "Docker",
|
||||
"Docker Storage Driver": "Docker存储驱动程序",
|
||||
"Docker Swarm": "Docker集群",
|
||||
"Docker Swarm Mode": "Docker集群模式",
|
||||
@ -796,7 +811,9 @@
|
||||
"Enable Registry": "启用注册表",
|
||||
"Enable Service": "启用服务",
|
||||
"Enable User": "启用用户",
|
||||
"Enable auto heal": "启用自动修复",
|
||||
"Enable compute host": "启用计算节点",
|
||||
"Enable interactive mode": "启用交互模式",
|
||||
"Enabled": "启用",
|
||||
"Enabled Load Balancer for Master Nodes": "主节点开启负载均衡",
|
||||
"Enabled Network": "打开网络",
|
||||
@ -814,8 +831,10 @@
|
||||
"Enter an integer value between 1 and 65535.": "端口必须是1到65535中的数字。",
|
||||
"Enter query conditions to filter": "输入查询条件进行筛选",
|
||||
"Entered: {length, plural, =1 {one character} other {# characters} }(maximum {maxCount} characters)": "已输入:{length}字符(最多{maxCount}字符)",
|
||||
"Environment": "环境",
|
||||
"Environment Variable": "环境变量",
|
||||
"Ephemeral Disk(GB)": "本地临时卷(GB)",
|
||||
"Environment Variables": "环境变量",
|
||||
"Ephemeral Disk(GiB)": "本地临时卷(GiB)",
|
||||
"Equatorial Guinea": "赤道几内亚",
|
||||
"Eritrea": "厄立特里亚国",
|
||||
"Error": "错误",
|
||||
@ -828,6 +847,7 @@
|
||||
"Event Time": "发生时间",
|
||||
"Evictions": "",
|
||||
"Execution Result": "执行结果",
|
||||
"Exit Policy": "退出策略",
|
||||
"Expand Advanced Options": "展开高级选项",
|
||||
"Expired Time": "到期时间",
|
||||
"Expires At": "到期时间",
|
||||
@ -947,6 +967,7 @@
|
||||
"Gibraltar": "直布罗陀",
|
||||
"Gigabytes(GB)": "云硬盘容量(GB)",
|
||||
"Given IP": "指定IP",
|
||||
"Glance": "",
|
||||
"Global Setting": "平台配置",
|
||||
"GlusterFS": "",
|
||||
"Greece": "希腊",
|
||||
@ -1064,10 +1085,12 @@
|
||||
"Image & OS": "镜像和操作系统",
|
||||
"Image Backup": "镜像备份",
|
||||
"Image Detail": "镜像详情",
|
||||
"Image Driver": "镜像驱动程序",
|
||||
"Image ID": "镜像ID",
|
||||
"Image Info": "镜像信息",
|
||||
"Image Name": "镜像名称",
|
||||
"Image Pending Upload": "",
|
||||
"Image Pull Policy": "镜像拉取策略",
|
||||
"Image Size": "镜像大小",
|
||||
"Image Snapshot Pending": "镜像快照等待上传",
|
||||
"Image Uploading": "镜像上传中",
|
||||
@ -1143,6 +1166,7 @@
|
||||
"Instances": "云主机",
|
||||
"Instances \"{ name }\" are locked, can not delete them.": "云主机\"{ name }\"被锁定,无法删除。",
|
||||
"Insufficient {name} quota to create resources(left { quota }, input { input }).": "{ name }配额不足,无法创建资源,请进行资源数量或配额的调整(剩余{ quota },输入{ input })。",
|
||||
"Interactive": "可交互",
|
||||
"Interface": "网卡",
|
||||
"Interface Info": "接口信息",
|
||||
"Interface Name:": "网卡ID:",
|
||||
@ -1245,6 +1269,7 @@
|
||||
"Liechtenstein": "列支敦士登",
|
||||
"Lifetime": "生存期",
|
||||
"Lifetime Value": "生存期值",
|
||||
"Links": "链接",
|
||||
"Listener": "监听器",
|
||||
"Listener Connection Limit": "监听器连接限制",
|
||||
"Listener Description": "监听器描述",
|
||||
@ -1260,6 +1285,7 @@
|
||||
"Load Balancer Detail": "负载均衡详情",
|
||||
"Load Balancer Name": "负载均衡名称",
|
||||
"Load Balancers": "负载均衡",
|
||||
"Load Template from a file": "从文件加载模板",
|
||||
"Load from local files": "从本地文件读取",
|
||||
"LoadBalancers Instances": "负载均衡",
|
||||
"Local": "本端",
|
||||
@ -1335,6 +1361,7 @@
|
||||
"Max BandWidth": "最大带宽",
|
||||
"Max Burst": "最大突发",
|
||||
"Max Retries": "最大重试次数",
|
||||
"Max Retry": "最大重试次数",
|
||||
"Max connect": "最大连接数",
|
||||
"Maximum interval time for each health check response": "每个健康检查响应的最大间隔时间",
|
||||
"Mayotte": "马约特",
|
||||
@ -1350,7 +1377,7 @@
|
||||
"Memory Page": "内存页",
|
||||
"Memory Page Size": "内存页大小",
|
||||
"Memory Usage": "内存使用量",
|
||||
"Memory usage Num (GB)": "内存用量 (GB)",
|
||||
"Memory usage Num (GiB)": "内存用量 (GiB)",
|
||||
"Mesos": "Mesos",
|
||||
"Message": "消息",
|
||||
"Message Details": "消息详情",
|
||||
@ -1366,9 +1393,9 @@
|
||||
"Migrating": "迁移",
|
||||
"Migrating To": "迁移目标",
|
||||
"Min Memory": "最小内存",
|
||||
"Min Memory(GB)": "最小内存(GB)",
|
||||
"Min Memory(GiB)": "最小内存(GiB)",
|
||||
"Min System Disk": "最小系统盘",
|
||||
"Min System Disk(GB)": "最小系统盘(GB)",
|
||||
"Min System Disk(GiB)": "最小系统盘(GiB)",
|
||||
"Min size": "最小容量",
|
||||
"Min. Disk": "最小硬盘大小",
|
||||
"Min. RAM": "最小内存",
|
||||
@ -1406,6 +1433,7 @@
|
||||
"NUMA Nodes": "NUMA节点",
|
||||
"Name": "名称",
|
||||
"Name can not be duplicated": "名称不可重复",
|
||||
"Name or ID og the container image": "容器镜像的名称或 ID",
|
||||
"Namespace": "命名空间",
|
||||
"Namibia": "那米比亚",
|
||||
"Nauru": "瑙鲁",
|
||||
@ -1504,6 +1532,7 @@
|
||||
"Offline": "离线",
|
||||
"Oman": "阿曼",
|
||||
"On": "开",
|
||||
"On failure": "失败时",
|
||||
"One entry per line(e.g. 114.114.114.114)": "每行一条(例如: 114.114.114.114)",
|
||||
"One entry per line(e.g. {ip})": "每行一条(例如: {ip})",
|
||||
"One-way authentication": "单向认证",
|
||||
@ -1564,6 +1593,7 @@
|
||||
"Paste File": "粘贴文件",
|
||||
"Path": "路径",
|
||||
"Pause": "暂停",
|
||||
"Pause Container": "暂停容器",
|
||||
"Pause Instance": "暂停云主机",
|
||||
"Paused": "已暂停",
|
||||
"Pausing": "暂停中",
|
||||
@ -1655,6 +1685,7 @@
|
||||
"Please select item!": "请选择一个条目!",
|
||||
"Please select key": "请选择一个键",
|
||||
"Please select policy": "请选择一个策略",
|
||||
"Please select source": "请选择源",
|
||||
"Please select type": "请选择类型",
|
||||
"Please select volume type": "请选择云硬盘类型",
|
||||
"Please select your Domain!": "请选择Domain!",
|
||||
@ -1763,12 +1794,12 @@
|
||||
"Quota: Insufficient quota to create resources, please adjust resource quantity or quota(left { quota }, input { input }).": "配额:项目配额不足,无法创建资源,请进行资源数量或配额的调整(剩余{ quota },输入{ input })。",
|
||||
"Quota: Project quotas sufficient resources can be created": "配额:项目配额充足,可创建资源",
|
||||
"RAM": "内存",
|
||||
"RAM(MB)": "内存(MB)",
|
||||
"RAM(MiB)": "内存(MiB)",
|
||||
"RAW - Raw disk image format": "RAW - 原始磁盘映像格式",
|
||||
"ROUND_ROBIN": "轮询算法",
|
||||
"RSVP": "",
|
||||
"Raid Interface": "Raid接口",
|
||||
"Ram Size(GB)": "内存容量(GB)",
|
||||
"Ram Size(GiB)": "内存容量(GiB)",
|
||||
"Ram value is { ram }, NUMA RAM value is { totalRam }, need to be equal. ": "内存是 { ram }MB,NUMA节点的内存是{ totalRam }MB,需要一致。",
|
||||
"Ramdisk ID": "内存盘ID",
|
||||
"Ramdisk Image": "Ramdisk镜像",
|
||||
@ -1780,6 +1811,7 @@
|
||||
"Reason": "原因",
|
||||
"Reason: ": "原因:",
|
||||
"Reboot": "重启",
|
||||
"Reboot Container": "重启容器",
|
||||
"Reboot Instance": "重启云主机",
|
||||
"Rebooting": "重启中",
|
||||
"Rebuild": "重建",
|
||||
@ -1834,6 +1866,7 @@
|
||||
"Resource Type": "资源类型",
|
||||
"Resource Types": "资源类型",
|
||||
"Resources Synced": "资源同步",
|
||||
"Restart Policy": "重启策略",
|
||||
"Restore Backup": "恢复备份",
|
||||
"Restore backup": "恢复备份",
|
||||
"Restore from snapshot": "从快照恢复",
|
||||
@ -1845,6 +1878,7 @@
|
||||
"Resume In Progress": "正在恢复中",
|
||||
"Resume Instance": "恢复云主机",
|
||||
"Resuming": "恢复中",
|
||||
"Retry times for 'Restart on failure' policy": "“失败时重新启动”策略的重试次数",
|
||||
"Retyping": "修改类型中",
|
||||
"Reunion": "留尼汪岛",
|
||||
"Revert Resize or Migrate": "回滚修改配置/迁移",
|
||||
@ -1873,8 +1907,9 @@
|
||||
"Rules": "规则",
|
||||
"Rules Number": "规则数量",
|
||||
"Running": "运行中",
|
||||
"Running Threads": "",
|
||||
"Running Time": "",
|
||||
"Running Threads": "运行中的线程",
|
||||
"Running Time": "运行时间",
|
||||
"Runtime": "运行时间",
|
||||
"Russia": "俄罗斯",
|
||||
"Rwanda": "卢旺达",
|
||||
"SCTP": "",
|
||||
@ -1890,6 +1925,7 @@
|
||||
"Sao Tome and Principe": "圣多美和普林西比",
|
||||
"Saudi Arabia": "沙特阿拉伯",
|
||||
"Saving": "保存中",
|
||||
"Scheduler Hints": "调度程序提示",
|
||||
"Scheduling": "调度中",
|
||||
"Sec for DPD delay, > 0": "设置DPD检查的最大延时时间。",
|
||||
"Sec for DPD timeout, > 0 & > DPD Interval": "设置DPD检查的超时时间,超时时间必须大于最大延迟时间。",
|
||||
@ -1986,6 +2022,7 @@
|
||||
"Size": "容量",
|
||||
"Size (GB)": "容量 (GB)",
|
||||
"Size of image to launch": "启动的镜像大小",
|
||||
"Size(GiB)": "大小(GiB)",
|
||||
"Size: *": "容量 *",
|
||||
"Slovakia (Slovak Republic)": "斯洛伐克",
|
||||
"Slovenia": "斯洛文尼亚",
|
||||
@ -2014,12 +2051,14 @@
|
||||
"Solomon Islands": "索罗门群岛",
|
||||
"Somalia": "索马里",
|
||||
"Sorry, the page you visited does not exist.": "抱歉,您访问的页面不存在。",
|
||||
"Source": "源",
|
||||
"Source Path: {path}": "原路径:{path}",
|
||||
"Source Port/Port Range": "源端口/端口范围",
|
||||
"South Africa": "南非",
|
||||
"South Korea": "韩国",
|
||||
"Spain": "西班牙",
|
||||
"Spawning": "孵化中",
|
||||
"Spec": "规格",
|
||||
"Specification": "规格",
|
||||
"Specify whether future replicated instances will be created on the same hypervisor (affinity) or on different hypervisors (anti-affinity). This value is ignored if the instance to be launched is a replica.": "指定未来的复制实例是在相同的管理程序(亲和)上创建还是在不同的管理程序(反亲和)上创建。如果要启动的实例是副本,则忽略此值。",
|
||||
"Specs": "规格",
|
||||
@ -2038,6 +2077,7 @@
|
||||
"Stand Alone Ports Supported": "独立端口支持",
|
||||
"Standard Trait": "标准特性",
|
||||
"Start": "启动",
|
||||
"Start Container": "启动容器",
|
||||
"Start Instance": "启动云主机",
|
||||
"Start Source": "启动源",
|
||||
"Start Source Name": "启动源名称",
|
||||
@ -2050,8 +2090,10 @@
|
||||
"Static Routes": "静态路由",
|
||||
"Status": "状态",
|
||||
"Status Code": "状态码",
|
||||
"Status Detail": "状态详情",
|
||||
"Status Reason": "状态原因",
|
||||
"Stop": "关闭",
|
||||
"Stop Container": "关闭容器",
|
||||
"Stop Instance": "关闭云主机",
|
||||
"Stop auto refreshing data": "关闭自动刷新数据",
|
||||
"Stop refreshing data every {num} seconds": "关闭每{num}秒自动刷新数据",
|
||||
@ -2122,6 +2164,7 @@
|
||||
"Target IP Address": "目标IP地址",
|
||||
"Target Port": "目标网卡",
|
||||
"Target Storage Backend": "目标存储后端",
|
||||
"Task State": "任务状态",
|
||||
"Template Content": "模板内容",
|
||||
"Template Name": "模板名称",
|
||||
"Thailand": "泰国",
|
||||
@ -2136,16 +2179,19 @@
|
||||
"The amphora instance is required for load balancing service setup and is not recommended": "amphora 相关的云主机为负载均衡服务搭建所需,不建议选择",
|
||||
"The associated floating IP, virtual adapter, volume and other resources will be automatically disassociated.": "绑定的浮动IP、网卡、云硬盘等资源将自动解绑。",
|
||||
"The certificate contains information such as the public key and signature of the certificate. The extension of the certificate is \"pem\" or \"crt\", you can directly enter certificate content or upload certificate file.": "证书包含证书的公钥和签名等信息,证书扩展名为”pem”或”crt”,您可直接输入证书内容或上传证书文件。",
|
||||
"The container memory size in MiB": "以 MiB 为单位的容器内存大小",
|
||||
"The creation instruction has been issued, please refresh to see the actual situation in the list.": "创建指令已下发,请刷新查看云主机列表中的实际情况。",
|
||||
"The creation instruction was issued successfully, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "创建指令下发成功,实例名称:{name}。 \n 您可等待几秒关注列表数据的变更或是手动刷新数据,以获取最终展示结果。",
|
||||
"The current operation can be performed when the instance is online:": "当前操作可在云主机在线状态下进行:",
|
||||
"The current operation requires the instance to be shut down:": "当前操作需要云主机在关机状态下进行:",
|
||||
"The description can be up to 255 characters long.": "描述最长为255字符",
|
||||
"The disk size in GİB for per container": "以 GiB 为单位的容器磁盘大小",
|
||||
"The domain name can only be composed of letters, numbers, dashes, in A dash cannot be at the beginning or end, and a single string cannot exceed more than 63 characters, separated by dots; At most can support 30 domain names, separated by commas;The length of a single domain name does not exceed 100 characters, and the total length degree does not exceed 1024 characters.": "域名只能由字母,数字,中划线组成,中划线不能在开头或末尾,单个字符串不超过63个字符,字符串间以点分隔;最多可支持30个域名,域名间以英文逗号分隔;单个域名长度不超过100个字符,且总长度不超过1024个字符。",
|
||||
"The entire inspection process takes 5 to 10 minutes, so you need to be patient. After the registration is completed, the node configuration status will return to the manageable status.": "检查的整个过程需要耗费 5 到 10 分钟时间,您需要耐心等待。在完成注册后,节点配置状态会重新回到可管理状态。",
|
||||
"The feasible configuration of cloud-init or cloudbase-init service in the image is not synced to image's properties, so the Login Name is unknown.": "镜像中的cloud-init或cloudbase-init服务的预制配置未同步至镜像属性, 登录名未知",
|
||||
"The file with the same name will be overwritten.": "对同名文件将会进行文件覆盖操作。",
|
||||
"The format of the certificate content is: by \"----BEGIN CERTIFICATE-----\" as the beginning,\"-----END CERTIFICATE----\" as the end, 64 characters per line, the last line does not exceed 64 characters, and there cannot be blank lines.": "证书内容格式为:以”-----BEGIN CERTIFICATE-----”作为开头,以“-----END CERTIFICATE----”作为结尾,每行64字符,最后一行不超过64字符,不能有空行。",
|
||||
"The host name of this container": "容器的主机名",
|
||||
"The http_proxy address to use for nodes in cluster": "用于集群中节点的 http_proxy 地址",
|
||||
"The https_proxy address to use for nodes in cluster": "用于集群中节点的 https_proxy 地址",
|
||||
"The instance architecture diagram mainly shows the overall architecture composition of the instance. If you need to view the network topology of the instance, please go to: ": "云主机架构图主要展示云主机的总体架构组成。如果需要查看云主机的网络拓扑,请转到:",
|
||||
@ -2174,6 +2220,7 @@
|
||||
"The new password cannot be identical to the current password.": "用户新密码不能与原密码相同。",
|
||||
"The no_proxy address to use for nodes in cluster": "用于集群中节点的 no_proxy 地址",
|
||||
"The number of vCPU cores should not exceed the maximum number of CPU cores of the physical node. Otherwise it will cause fail to schedule to any physical node when creating instance.": "vCPU核数不应该超过物理节点的最大CPU核数,否则会导致云主机创建时无法调度到任何物理节点。",
|
||||
"The number of virtual cpu for this container": "容器的虚拟 CPU 数量",
|
||||
"The password must not be the same as the previous": "新密码不能与以前的密码相同",
|
||||
"The password must not be the same as the previous two": "用户新密码不能与重置前的密码一致",
|
||||
"The password must not be the same as the previous {num}": "用户新密码不能与前{num}次密码相同",
|
||||
@ -2183,6 +2230,7 @@
|
||||
"The private key of the certificate, the extension of the private key is \"key\", you can directly enter the content of the private key file or upload a private key that conforms to the format document.": "证书的私钥,私钥扩展名为”key”,您可直接输入私钥文件内容或上传符合格式的私钥文件。",
|
||||
"The resource class of the scheduled node needs to correspond to the resource class name of the flavor used by the ironic instance (for example, the resource class name of the scheduling node is baremetal.with-GPU, and the custom resource class name of the flavor is CUSTOM_BAREMETAL_WITH_GPU=1).": "被调度节点的资源类需要与裸机实例使用的云主机类型的资源类名称对应(比如:调度节点的资源类名称为 baremetal.with-GPU,云主机类型的资源类名称为CUSTOM_BAREMETAL_WITH_GPU=1 )。",
|
||||
"The root and os_admin are default users and cannot be created!": "root 和 os_admin 是默认用户,不能创建!",
|
||||
"The runtime to create container with": "用于创建容器的运行时间",
|
||||
"The security group is similar to the firewall function and is used to set up network access control. ": "安全组类似防火墙功能,用于设置网络访问控制。",
|
||||
"The security group is similar to the firewall function for setting up network access control, or you can go to the console and create a new security group. (Note: The security group you selected will work on all virtual LANS on the instances.)": "安全组类似防火墙功能,用于设置网络访问控制,您也可以前往控制台新建安全组。(注:您所选的安全组将作用于云主机的全部虚拟网卡。)",
|
||||
"The selected VPC/ subnet does not have IPv6 enabled.": "所选的VPC/子网未开通IPv6",
|
||||
@ -2203,6 +2251,7 @@
|
||||
"The volume status can be reset to in-use only when the previous status is in-use.": "只有当之前的状态为使用中时,才将云硬盘状态重置为使用中。",
|
||||
"The volume type needs to be consistent with the volume type when the snapshot is created.": "创建云硬盘的云硬盘类型需要和创建快照时间点的云硬盘类型保持一致。",
|
||||
"The volume type needs to set \"multiattach\" in the metadata to support shared volume attributes.": "云硬盘类型需在元数据中设置\"multiattach\",才可支持共享盘属性。",
|
||||
"The working directory for commands to run in": "用于运行命令的工作目录",
|
||||
"The {action} instruction has been issued, instance: {name}. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "{action}指令已下发,实例名称:{name}。 \n 您可等待几秒关注列表数据的变更或是手动刷新数据,以获取最终展示结果。",
|
||||
"The {action} instruction has been issued. \n You can wait for a few seconds to follow the changes of the list data or manually refresh the data to get the final display result.": "{action}指令已下发。 \n 您可等待几秒关注列表数据的变更或是手动刷新数据,以获取最终展示结果。",
|
||||
"There are resources that cannot {action} in the selected resources, such as:": "您选中的资源中有无法{action}的资源,如:",
|
||||
@ -2248,6 +2297,7 @@
|
||||
"Two-way authentication": "双向认证",
|
||||
"Type": "类型",
|
||||
"Type of datastore": "数据存储类型",
|
||||
"Type to Scheduler Hints and press enter": "输入调度程序提示并按回车键",
|
||||
"UDPLite": "",
|
||||
"USB Info": "USB 信息",
|
||||
"USB Parameters": "USB参数",
|
||||
@ -2278,6 +2328,7 @@
|
||||
"United Kingdom": "英国",
|
||||
"United States": "美国",
|
||||
"Unknown": "未知",
|
||||
"Unless Stopped": "除非停止",
|
||||
"Unless you know clearly which AZ to create the volume in, you don not need to fill in here.": "除非很明确知道应该在哪个 AZ 中创建 Volume,否则此处不用填",
|
||||
"Unlimit": "无限制",
|
||||
"Unlock": "解锁",
|
||||
@ -2286,6 +2337,7 @@
|
||||
"Unmanage Starting": "取消管理已开始",
|
||||
"Unmanaged": "已取消管理",
|
||||
"Unpause": "恢复",
|
||||
"Unpause Container": "恢复容器",
|
||||
"Unpause Instance": "恢复云主机",
|
||||
"Unrescuing": "",
|
||||
"Unshelve": "取消归档",
|
||||
@ -2403,6 +2455,7 @@
|
||||
"Volume Transfer": "云硬盘传输",
|
||||
"Volume Type": "云硬盘类型",
|
||||
"Volume Type Detail": "云硬盘类型详情",
|
||||
"Volumes": "云硬盘",
|
||||
"Wallis And Futuna Islands": "沃利斯和富图纳群岛",
|
||||
"Warn": "警告",
|
||||
"Warning": "警告",
|
||||
@ -2421,6 +2474,8 @@
|
||||
"Which Network Interface provider to use when plumbing the network connections for this Node": "当为这个节点连接网络时,使用哪个网络接口提供者",
|
||||
"Windows": "",
|
||||
"Work Num": "工号",
|
||||
"Workdir": "工作目录",
|
||||
"Working Directory": "工作目录",
|
||||
"X86 Architecture": "X86架构",
|
||||
"YAML File": "YAML文件",
|
||||
"Yemen": "也门",
|
||||
@ -2464,6 +2519,7 @@
|
||||
"be soft rebooted": "软重启",
|
||||
"be started": "启动",
|
||||
"be stopped": "关闭",
|
||||
"capsules": "capsules",
|
||||
"certificate": "证书",
|
||||
"cidr": "CIDR",
|
||||
"cinder services": "存储服务",
|
||||
@ -2710,10 +2766,10 @@
|
||||
"vpn endpoint groups": "VPN端点组",
|
||||
"vpn services": "VPN网关",
|
||||
"write": "写",
|
||||
"{ size } GB": "{ size } GB",
|
||||
"{ size } KB": "{ size } KB",
|
||||
"{ size } MB": "{ size } MB",
|
||||
"{ size } TB": "{ size } TB",
|
||||
"{ size } GiB": "{ size } GiB",
|
||||
"{ size } KiB": "{ size } KiB",
|
||||
"{ size } MiB": "{ size } MiB",
|
||||
"{ size } TiB": "{ size } TiB",
|
||||
"{ size } bytes": "{ size } 字节",
|
||||
"{action} successfully, instance: {name}.": "{action}成功,实例名称:{name}。",
|
||||
"{action} successfully.": "{action}成功。",
|
||||
|
@ -27,7 +27,7 @@ export const resourceCircle = [
|
||||
{
|
||||
resource: 'memory_mb',
|
||||
used: 'memory_mb_used',
|
||||
label: t('Memory usage Num (GB)'),
|
||||
label: t('Memory usage Num (GiB)'),
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -116,7 +116,7 @@ export class BaseDetail extends Base {
|
||||
];
|
||||
if (hasEphemeral) {
|
||||
options.push({
|
||||
label: t('Ephemeral Disk(GB)'),
|
||||
label: t('Ephemeral Disk(GiB)'),
|
||||
dataIndex: 'OS-FLV-EXT-DATA:ephemeral',
|
||||
});
|
||||
}
|
||||
@ -217,7 +217,7 @@ export class BaseDetail extends Base {
|
||||
<span style={{ marginRight: 16 }}>
|
||||
{t('CPU')} : {cpu}
|
||||
</span>
|
||||
{t('Mem')} : {mem}MB
|
||||
{t('Mem')} : {mem}MiB
|
||||
</div>
|
||||
),
|
||||
};
|
||||
|
@ -355,7 +355,7 @@ export class ParamSetting extends Base {
|
||||
},
|
||||
{
|
||||
name: 'memoryGb',
|
||||
label: t('Ram Size(GB)'),
|
||||
label: t('Ram Size(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 1,
|
||||
required: true,
|
||||
@ -369,14 +369,14 @@ export class ParamSetting extends Base {
|
||||
},
|
||||
{
|
||||
name: 'ephemeral',
|
||||
label: t('Ephemeral Disk(GB)'),
|
||||
label: t('Ephemeral Disk(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
hidden: !hasEphemeral,
|
||||
},
|
||||
{
|
||||
name: 'ephemeralTmp',
|
||||
label: t('Ephemeral Disk(GB)'),
|
||||
label: t('Ephemeral Disk(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
hidden: isBareMetal || hasEphemeral,
|
||||
|
@ -57,7 +57,7 @@ export class HypervisorDetail extends Base {
|
||||
),
|
||||
},
|
||||
{
|
||||
title: t('Configured Memory (GB)'),
|
||||
title: t('Configured Memory (GiB)'),
|
||||
dataIndex: 'memory_mb_percent',
|
||||
render: (value, record) =>
|
||||
record.hypervisor_type === 'ironic' ? (
|
||||
|
@ -45,13 +45,13 @@ export class BaseDetail extends Base {
|
||||
valueRender: 'bytes',
|
||||
},
|
||||
{
|
||||
label: t('Min System Disk(GB)'),
|
||||
label: t('Min System Disk(GiB)'),
|
||||
dataIndex: 'min_disk',
|
||||
},
|
||||
{
|
||||
label: t('Min Memory(GB)'),
|
||||
label: t('Min Memory(GiB)'),
|
||||
dataIndex: 'min_ram',
|
||||
valueRender: 'GBValue',
|
||||
valueRender: 'GiBValue',
|
||||
},
|
||||
{
|
||||
label: t('Disk Format'),
|
||||
|
@ -249,14 +249,14 @@ export class CreateForm extends FormAction {
|
||||
},
|
||||
{
|
||||
name: 'min_disk',
|
||||
label: t('Min System Disk(GB)'),
|
||||
label: t('Min System Disk(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
max: 500,
|
||||
},
|
||||
{
|
||||
name: 'min_ram',
|
||||
label: t('Min Memory(GB)'),
|
||||
label: t('Min Memory(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
max: 500,
|
||||
|
@ -92,10 +92,10 @@ export class CreateVolume extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'input-int',
|
||||
min: minSize,
|
||||
extra: `${t('Min size')}: ${minSize}GB`,
|
||||
extra: `${t('Min size')}: ${minSize}GiB`,
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
|
@ -125,7 +125,7 @@ export class Edit extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'min_disk',
|
||||
label: t('Min System Disk(GB)'),
|
||||
label: t('Min System Disk(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
max: 500,
|
||||
@ -133,7 +133,7 @@ export class Edit extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'min_ram',
|
||||
label: t('Min Memory(GB)'),
|
||||
label: t('Min Memory(GiB)'),
|
||||
type: 'input-int',
|
||||
min: 0,
|
||||
max: 500,
|
||||
|
@ -149,7 +149,7 @@ export class BaseDetail extends Base {
|
||||
},
|
||||
{
|
||||
label: t('RAM'),
|
||||
content: `${flavor.ram / 1024} GB`,
|
||||
content: `${flavor.ram / 1024} GiB`,
|
||||
},
|
||||
{
|
||||
label: t('VCPUs'),
|
||||
@ -366,7 +366,7 @@ export class BaseDetail extends Base {
|
||||
},
|
||||
{
|
||||
label: t('Size'),
|
||||
value: `${item.size}GB`,
|
||||
value: `${item.size}GiB`,
|
||||
},
|
||||
{
|
||||
label: t('Volume Type'),
|
||||
|
@ -33,8 +33,8 @@ export class ConfirmStep extends Base {
|
||||
const { flavor } = context;
|
||||
const { disk, ram, vcpus } = flavor.selectedRows[0];
|
||||
return disk
|
||||
? `${vcpus}VCPU/${disk}GB/${Number.parseInt(ram / 1024, 10)}GB`
|
||||
: `${vcpus}VCPU/${Number.parseInt(ram / 1024, 10)}GB`;
|
||||
? `${vcpus}VCPU/${disk}GiB/${Number.parseInt(ram / 1024, 10)}GiB`
|
||||
: `${vcpus}VCPU/${Number.parseInt(ram / 1024, 10)}GiB`;
|
||||
}
|
||||
|
||||
getSourceValue() {
|
||||
|
@ -100,7 +100,7 @@ export class DetachVolume extends ModalAction {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Status'),
|
||||
|
@ -248,8 +248,8 @@ export class BaseStep extends Base {
|
||||
let imageSize = 0;
|
||||
if (this.sourceTypeIsImage) {
|
||||
const { min_disk = 0, size = 0 } = this.state.image || {};
|
||||
const sizeGB = Math.ceil(size / 1024 / 1024 / 1024);
|
||||
imageSize = Math.max(min_disk, sizeGB, 1);
|
||||
const sizeGiB = Math.ceil(size / 1024 / 1024 / 1024);
|
||||
imageSize = Math.max(min_disk, sizeGiB, 1);
|
||||
}
|
||||
return Math.max(flavorSize, imageSize, 1);
|
||||
}
|
||||
@ -317,7 +317,7 @@ export class BaseStep extends Base {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
width: 80,
|
||||
},
|
||||
{
|
||||
|
@ -37,13 +37,13 @@ export class ConfirmStep extends Base {
|
||||
|
||||
getDisk(diskInfo) {
|
||||
const { size, typeOption, deleteTypeLabel } = diskInfo;
|
||||
return `${typeOption.label} ${size}GB ${deleteTypeLabel}`;
|
||||
return `${typeOption.label} ${size}GiB ${deleteTypeLabel}`;
|
||||
}
|
||||
|
||||
getBootableVolumeDisk() {
|
||||
const { bootableVolume } = this.props.context;
|
||||
const { size, volume_type } = bootableVolume.selectedRows[0];
|
||||
return `${volume_type} ${size}GB`;
|
||||
return `${volume_type} ${size}GiB`;
|
||||
}
|
||||
|
||||
getSystemDisk() {
|
||||
@ -67,8 +67,8 @@ export class ConfirmStep extends Base {
|
||||
const { flavor } = context;
|
||||
const { disk, ram, vcpus } = flavor.selectedRows[0];
|
||||
return disk
|
||||
? `${vcpus}VCPU/${disk}GB/${Number.parseInt(ram / 1024, 10)}GB`
|
||||
: `${vcpus}VCPU/${Number.parseInt(ram / 1024, 10)}GB`;
|
||||
? `${vcpus}VCPU/${disk}GiB/${Number.parseInt(ram / 1024, 10)}GiB`
|
||||
: `${vcpus}VCPU/${Number.parseInt(ram / 1024, 10)}GiB`;
|
||||
}
|
||||
|
||||
getSourceValue() {
|
||||
|
@ -335,7 +335,7 @@ export const storageLeftCardList = [
|
||||
},
|
||||
},
|
||||
{
|
||||
title: t('Disk allocation (GB)'),
|
||||
title: t('Disk allocation (GiB)'),
|
||||
span: 12,
|
||||
createFetchParams: {
|
||||
metricKey: 'monitorOverview.cephStorageAllocate',
|
||||
@ -367,7 +367,7 @@ export const storageLeftCardList = [
|
||||
fontSize: 12,
|
||||
}}
|
||||
>
|
||||
{`${usedValue} GB / ${totalValue} GB`}
|
||||
{`${usedValue} GiB / ${totalValue} GiB`}
|
||||
</Row>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -57,7 +57,7 @@ export class Detail extends Base {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value} GB`,
|
||||
render: (value) => `${value} GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Description'),
|
||||
|
@ -89,10 +89,10 @@ export class CreateVolume extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'input-int',
|
||||
min: this.minSize,
|
||||
extra: `${t('Min size')}: ${this.minSize}GB`,
|
||||
extra: `${t('Min size')}: ${this.minSize}GiB`,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ export class Detail extends Base {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (data) => `${data} GB`,
|
||||
render: (data) => `${data} GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Created At'),
|
||||
|
@ -89,10 +89,10 @@ export class CreateVolume extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'input-int',
|
||||
min: this.minSize,
|
||||
extra: `${t('Min size')}: ${this.minSize}GB`,
|
||||
extra: `${t('Min size')}: ${this.minSize}GiB`,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
|
@ -106,7 +106,7 @@ export class Snapshots extends Base {
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
isHideable: true,
|
||||
render: (data) => `${data} GB`,
|
||||
render: (data) => `${data} GiB`,
|
||||
sorter: false,
|
||||
},
|
||||
{
|
||||
|
@ -53,7 +53,7 @@ export class Attach extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, size, volume_type } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
};
|
||||
return value;
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ export class ChangeType extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
volume_type: (this.volumeTypes[0] || {}).value,
|
||||
};
|
||||
return value;
|
||||
|
@ -294,8 +294,8 @@ export class Create extends FormAction {
|
||||
let imageSize = 0;
|
||||
if (this.sourceTypeIsImage) {
|
||||
const { min_disk = 0, size = 0 } = this.state.image || {};
|
||||
const sizeGB = Math.ceil(size / 1024 / 1024 / 1024);
|
||||
imageSize = Math.max(min_disk, sizeGB, 1);
|
||||
const sizeGiB = Math.ceil(size / 1024 / 1024 / 1024);
|
||||
imageSize = Math.max(min_disk, sizeGiB, 1);
|
||||
} else if (this.sourceTypeIsSnapshot) {
|
||||
const { size = 0 } = this.state.snapshot || {};
|
||||
imageSize = size;
|
||||
@ -405,7 +405,7 @@ export class Create extends FormAction {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
sorter: false,
|
||||
},
|
||||
{
|
||||
@ -445,17 +445,17 @@ export class Create extends FormAction {
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'slider-input',
|
||||
max: this.maxSize,
|
||||
min: minSize,
|
||||
description: `${minSize}GB-${this.maxSize}GB`,
|
||||
description: `${minSize}GiB-${this.maxSize}GiB`,
|
||||
required: this.quotaIsLimit,
|
||||
hidden: !this.quotaIsLimit,
|
||||
},
|
||||
{
|
||||
name: 'size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'input-int',
|
||||
min: minSize,
|
||||
hidden: this.quotaIsLimit,
|
||||
|
@ -34,7 +34,7 @@ export class CreateBackup extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
incremental: false,
|
||||
};
|
||||
return value;
|
||||
|
@ -35,7 +35,7 @@ export class CreateSnapshot extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
};
|
||||
return value;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ export class Detach extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, size, volume_type } = this.item;
|
||||
const value = {
|
||||
volume: `${name}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name}(${volume_type} | ${size}GiB)`,
|
||||
};
|
||||
return value;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ export class ExtendVolume extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
new_size: size + 1,
|
||||
};
|
||||
return value;
|
||||
@ -91,17 +91,17 @@ export class ExtendVolume extends ModalAction {
|
||||
},
|
||||
{
|
||||
name: 'new_size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'slider-input',
|
||||
max: this.maxSize,
|
||||
min: minSize,
|
||||
description: `${minSize}GB-${this.maxSize}GB`,
|
||||
description: `${minSize}GiB-${this.maxSize}GiB`,
|
||||
required: true,
|
||||
display: this.isQuotaLimited,
|
||||
},
|
||||
{
|
||||
name: 'new_size',
|
||||
label: t('Capacity (GB)'),
|
||||
label: t('Capacity (GiB)'),
|
||||
type: 'input-int',
|
||||
min: minSize,
|
||||
required: true,
|
||||
|
@ -44,7 +44,7 @@ export class Migrate extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size, host } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
host,
|
||||
};
|
||||
return value;
|
||||
|
@ -39,7 +39,7 @@ export class RestoreAction extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id = '-', volume_type = '-', size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
};
|
||||
return value;
|
||||
}
|
||||
@ -78,7 +78,7 @@ export class RestoreAction extends ModalAction {
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
sorter: false,
|
||||
},
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ export class UpdateStatus extends ModalAction {
|
||||
get defaultValue() {
|
||||
const { name, id, volume_type, size } = this.item;
|
||||
const value = {
|
||||
volume: `${name || id}(${volume_type} | ${size}GB)`,
|
||||
volume: `${name || id}(${volume_type} | ${size}GiB)`,
|
||||
status: 'available',
|
||||
};
|
||||
return value;
|
||||
|
@ -67,7 +67,7 @@ export const backupPointColumns = [
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
isHideable: true,
|
||||
render: (value) => `${value} GB`,
|
||||
render: (value) => `${value} GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Status'),
|
||||
|
@ -146,7 +146,7 @@ export const volumeColumns = [
|
||||
{
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Status'),
|
||||
@ -257,7 +257,7 @@ export const getVolumeColumnsList = (self) => {
|
||||
title: t('Size'),
|
||||
dataIndex: 'size',
|
||||
isHideable: true,
|
||||
render: (value) => `${value}GB`,
|
||||
render: (value) => `${value}GiB`,
|
||||
},
|
||||
{
|
||||
title: t('Status'),
|
||||
|
@ -172,7 +172,7 @@ export const getBaseColumns = (self) => [
|
||||
},
|
||||
},
|
||||
{
|
||||
title: t('Ephemeral Disk(GB)'),
|
||||
title: t('Ephemeral Disk(GiB)'),
|
||||
dataIndex: 'OS-FLV-EXT-DATA:ephemeral',
|
||||
isHideable: true,
|
||||
},
|
||||
|
@ -48,7 +48,7 @@ export const hypervisorColumns = [
|
||||
})`,
|
||||
},
|
||||
{
|
||||
title: t('Configured Memory (GB)'),
|
||||
title: t('Configured Memory (GiB)'),
|
||||
dataIndex: 'memory_mb_percent',
|
||||
render: (value, record) =>
|
||||
record.hypervisor_type === 'ironic' ? (
|
||||
|
@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
|
||||
import { action, observable } from 'mobx';
|
||||
import { getGBValue } from 'utils/index';
|
||||
import { getGiBValue } from 'utils/index';
|
||||
import { get, isNil, isEmpty } from 'lodash';
|
||||
import client from 'client';
|
||||
import Base from 'stores/base';
|
||||
@ -308,8 +308,8 @@ export class ProjectStore extends Base {
|
||||
const { quota: neutronQuota } = neutronResult;
|
||||
const { quota_set: shareQuota = {} } = shareResult || {};
|
||||
novaQuota.ram = {
|
||||
in_use: getGBValue(ram.in_use),
|
||||
limit: ram.limit === -1 ? ram.limit : getGBValue(ram.limit),
|
||||
in_use: getGiBValue(ram.in_use),
|
||||
limit: ram.limit === -1 ? ram.limit : getGiBValue(ram.limit),
|
||||
};
|
||||
const renameShareQuota = Object.keys(shareQuota).reduce((pre, cur) => {
|
||||
if (cur === 'gigabytes') {
|
||||
|
@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { getGBValue } from 'utils/index';
|
||||
import { getGiBValue } from 'utils/index';
|
||||
import { action, observable } from 'mobx';
|
||||
import { get } from 'lodash';
|
||||
import client from 'client';
|
||||
@ -48,8 +48,8 @@ export class HypervisorStore extends Base {
|
||||
// item.vcpus_used_percent = ((item.vcpus_used / item.vcpus) * 100).toFixed(2);
|
||||
// item.memory_mb_percent = ((item.memory_mb_used / item.memory_mb) * 100).toFixed(2);
|
||||
// item.storage_percent = ((item.local_gb_used / item.local_gb) * 100).toFixed(2);
|
||||
// item.memory_mb_used_gb = getGBValue(item.memory_mb_used);
|
||||
// item.memory_mb_gb = getGBValue(item.memory_mb);
|
||||
// item.memory_mb_used_gb = getGiBValue(item.memory_mb_used);
|
||||
// item.memory_mb_gb = getGiBValue(item.memory_mb);
|
||||
// return item;
|
||||
// };
|
||||
// }
|
||||
@ -84,8 +84,8 @@ export class HypervisorStore extends Base {
|
||||
(item.local_gb &&
|
||||
((item.local_gb_used / item.local_gb) * 100).toFixed(2)) ||
|
||||
0;
|
||||
item.memory_mb_used_gb = getGBValue(item.memory_mb_used);
|
||||
item.memory_mb_gb = getGBValue(item.memory_mb);
|
||||
item.memory_mb_used_gb = getGiBValue(item.memory_mb_used);
|
||||
item.memory_mb_gb = getGiBValue(item.memory_mb);
|
||||
return item;
|
||||
});
|
||||
return result;
|
||||
@ -129,8 +129,8 @@ export class HypervisorStore extends Base {
|
||||
const { usages: { VGPU } = {} } = usagesVGPU;
|
||||
item.vgpus_used = VGPU;
|
||||
}
|
||||
item.memory_mb_used_gb = getGBValue(item.memory_mb_used);
|
||||
item.memory_mb_gb = getGBValue(item.memory_mb);
|
||||
item.memory_mb_used_gb = getGiBValue(item.memory_mb_used);
|
||||
item.memory_mb_gb = getGiBValue(item.memory_mb);
|
||||
const newItem = await this.detailDidFetch(item, all_projects);
|
||||
const detail = this.mapper(newItem);
|
||||
this.detail = detail;
|
||||
@ -168,8 +168,8 @@ export class HypervisorStore extends Base {
|
||||
}
|
||||
data.vcpus += item.vcpus;
|
||||
data.vcpus_used += item.vcpus_used;
|
||||
data.memory_mb += getGBValue(item.memory_mb);
|
||||
data.memory_mb_used += getGBValue(item.memory_mb_used);
|
||||
data.memory_mb += getGiBValue(item.memory_mb);
|
||||
data.memory_mb_used += getGiBValue(item.memory_mb_used);
|
||||
// fetch storage info from prometheus
|
||||
// data.local_gb += item.local_gb;
|
||||
// data.local_gb_used += item.local_gb_used;
|
||||
|
@ -91,7 +91,7 @@ export default class MonitorBase extends Base {
|
||||
}, 200);
|
||||
};
|
||||
|
||||
formatToGB(str) {
|
||||
formatToGiB(str) {
|
||||
return parseFloat((parseInt(str, 10) / 1073741824).toFixed(2));
|
||||
}
|
||||
|
||||
|
@ -46,11 +46,11 @@ export class StorageClusterStore extends MonitorBase {
|
||||
used:
|
||||
used.data.result.length === 0
|
||||
? 0
|
||||
: this.formatToGB(used.data.result[0].value[1]),
|
||||
: this.formatToGiB(used.data.result[0].value[1]),
|
||||
total:
|
||||
total.data.result.length === 0
|
||||
? 0
|
||||
: this.formatToGB(total.data.result[0].value[1]),
|
||||
: this.formatToGiB(total.data.result[0].value[1]),
|
||||
},
|
||||
});
|
||||
};
|
||||
|
@ -32,7 +32,18 @@ import { SIZE_VALUE, MILLISECOND_IN_TIME_UNIT } from './constants';
|
||||
*/
|
||||
export const formatSize = (size, start = 0) => {
|
||||
const divisor = 1024;
|
||||
const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'BB'];
|
||||
const units = [
|
||||
'B',
|
||||
'KiB',
|
||||
'MiB',
|
||||
'GiB',
|
||||
'TiB',
|
||||
'PiB',
|
||||
'EiB',
|
||||
'ZiB',
|
||||
'YiB',
|
||||
'BiB',
|
||||
];
|
||||
let index = isNumber(start) ? start : 0;
|
||||
if (!isNumber(size) || isNaN(size)) {
|
||||
return size || '-';
|
||||
@ -82,7 +93,7 @@ export const getQueryString = (params) =>
|
||||
|
||||
export const getYesNo = (input) => (input ? t('Yes') : t('No'));
|
||||
|
||||
export const getGBValue = (input) => {
|
||||
export const getGiBValue = (input) => {
|
||||
const gb = 1024;
|
||||
if (isNaN(input) || isNil(input) || !input || !isNumber(input)) {
|
||||
return 0;
|
||||
@ -116,19 +127,19 @@ export const bytesFilter = (input) => {
|
||||
}
|
||||
if (input >= tb) {
|
||||
const size = Number(input / tb).toFixed(2);
|
||||
return t('{ size } TB', { size });
|
||||
return t('{ size } TiB', { size });
|
||||
}
|
||||
if (input >= gb) {
|
||||
const size = Number(input / gb).toFixed(2);
|
||||
return t('{ size } GB', { size });
|
||||
return t('{ size } GiB', { size });
|
||||
}
|
||||
if (input >= mb) {
|
||||
const size = Number(input / mb).toFixed(2);
|
||||
return t('{ size } MB', { size });
|
||||
return t('{ size } MiB', { size });
|
||||
}
|
||||
if (input >= kb) {
|
||||
const size = Number(input / kb).toFixed(2);
|
||||
return t('{ size } KB', { size });
|
||||
return t('{ size } KiB', { size });
|
||||
}
|
||||
const size = Math.floor(input);
|
||||
return t('{ size } bytes', { size });
|
||||
@ -181,7 +192,7 @@ export const renderFilterMap = {
|
||||
sinceTime: getSinceTime,
|
||||
keepTime: getKeepTime,
|
||||
yesNo: getYesNo,
|
||||
GBValue: getGBValue,
|
||||
GiBValue: getGiBValue,
|
||||
noValue: getNoValue,
|
||||
bytes: bytesFilter,
|
||||
uppercase: uppercaseFilter,
|
||||
|
@ -9,7 +9,7 @@ import {
|
||||
formatUsedTime,
|
||||
generateArray,
|
||||
generateId,
|
||||
getGBValue,
|
||||
getGiBValue,
|
||||
getNoValue,
|
||||
getOptions,
|
||||
getOptionsWithNoSet,
|
||||
@ -32,10 +32,10 @@ describe('test utils index.js', () => {
|
||||
expect(formatSize(NaN)).toBe('-');
|
||||
expect(formatSize('')).toBe('-');
|
||||
expect(formatSize(1000)).toBe('1000 B');
|
||||
expect(formatSize(128012010202)).toBe('119.22 GB');
|
||||
expect(formatSize(128012010202)).toBe('119.22 GiB');
|
||||
expect(formatSize('128012010202')).toBe('128012010202');
|
||||
expect(formatSize(10000 * 1024 ** 8)).toBe('9.77 BB');
|
||||
expect(formatSize(10000 * 1024 ** 9)).toBe('10000.00 BB');
|
||||
expect(formatSize(10000 * 1024 ** 8)).toBe('9.77 BiB');
|
||||
expect(formatSize(10000 * 1024 ** 9)).toBe('10000.00 BiB');
|
||||
});
|
||||
|
||||
it('formatUsedTime', () => {
|
||||
@ -65,19 +65,19 @@ describe('test utils index.js', () => {
|
||||
expect(getYesNo(0)).toBe(t('No'));
|
||||
});
|
||||
|
||||
it('getGBValue', () => {
|
||||
expect(getGBValue(1024)).toBe(1);
|
||||
expect(getGBValue(2 * 1024)).toBe(2);
|
||||
expect(getGBValue(2.554 * 1024)).toBe(2.55);
|
||||
expect(getGBValue(2.555 * 1024)).toBe(2.56);
|
||||
expect(getGBValue(2.556 * 1024)).toBe(2.56);
|
||||
expect(getGBValue(true)).toBe(0);
|
||||
expect(getGBValue(false)).toBe(0);
|
||||
expect(getGBValue(null)).toBe(0);
|
||||
expect(getGBValue(undefined)).toBe(0);
|
||||
expect(getGBValue(NaN)).toBe(0);
|
||||
expect(getGBValue('')).toBe(0);
|
||||
expect(getGBValue(0)).toBe(0);
|
||||
it('getGiBValue', () => {
|
||||
expect(getGiBValue(1024)).toBe(1);
|
||||
expect(getGiBValue(2 * 1024)).toBe(2);
|
||||
expect(getGiBValue(2.554 * 1024)).toBe(2.55);
|
||||
expect(getGiBValue(2.555 * 1024)).toBe(2.56);
|
||||
expect(getGiBValue(2.556 * 1024)).toBe(2.56);
|
||||
expect(getGiBValue(true)).toBe(0);
|
||||
expect(getGiBValue(false)).toBe(0);
|
||||
expect(getGiBValue(null)).toBe(0);
|
||||
expect(getGiBValue(undefined)).toBe(0);
|
||||
expect(getGiBValue(NaN)).toBe(0);
|
||||
expect(getGiBValue('')).toBe(0);
|
||||
expect(getGiBValue(0)).toBe(0);
|
||||
});
|
||||
|
||||
it('getNoValue', () => {
|
||||
@ -110,15 +110,15 @@ describe('test utils index.js', () => {
|
||||
expect(bytesFilter(-1)).toBe('');
|
||||
expect(bytesFilter(NaN)).toBe('');
|
||||
expect(bytesFilter(100)).toBe(t('{ size } bytes', { size: '100' }));
|
||||
expect(bytesFilter(1024)).toBe(t('{ size } KB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024)).toBe(t('{ size } KiB', { size: '1.00' }));
|
||||
expect(bytesFilter(10 * 1024 ** 2)).toBe(
|
||||
t('{ size } MB', { size: '10.00' })
|
||||
t('{ size } MiB', { size: '10.00' })
|
||||
);
|
||||
expect(bytesFilter(1024 ** 2)).toBe(t('{ size } MB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024 ** 3)).toBe(t('{ size } GB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024 ** 4)).toBe(t('{ size } TB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024 ** 2)).toBe(t('{ size } MiB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024 ** 3)).toBe(t('{ size } GiB', { size: '1.00' }));
|
||||
expect(bytesFilter(1024 ** 4)).toBe(t('{ size } TiB', { size: '1.00' }));
|
||||
expect(bytesFilter(3.15 * 1024 ** 4)).toBe(
|
||||
t('{ size } TB', { size: '3.15' })
|
||||
t('{ size } TiB', { size: '3.15' })
|
||||
);
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user