mirror of
				https://github.com/MHSanaei/3x-ui.git
				synced 2025-11-04 06:12:52 +00:00 
			
		
		
		
	chore: add empty screens for empty data (balancers, reverses, dns)
This commit is contained in:
		
						commit
						d6f9f3f6d3
					
				
					 13 changed files with 417 additions and 329 deletions
				
			
		| 
						 | 
				
			
			@ -338,6 +338,7 @@
 | 
			
		|||
                </a-collapse>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
              <a-tab-pane key="tpl-routing" tab='{{ i18n "pages.xray.Routings"}}' style="padding-top: 20px;">
 | 
			
		||||
                <a-space direction="vertical" size="middle">
 | 
			
		||||
                    <a-button type="primary" icon="plus" @click="addRule">{{ i18n "pages.xray.rules.add" }}</a-button>
 | 
			
		||||
                    <a-table-sortable :columns="isMobile ? rulesMobileColumns : rulesColumns" bordered
 | 
			
		||||
                        :row-key="r => r.key"
 | 
			
		||||
| 
						 | 
				
			
			@ -345,7 +346,6 @@
 | 
			
		|||
                        :scroll="isMobile ? {} : { x: 1000 }"
 | 
			
		||||
                        :pagination="false"
 | 
			
		||||
                        :indent-size="0" 
 | 
			
		||||
                    :style="isMobile ? 'padding: 5px 0' : 'margin-top: 10px;'"
 | 
			
		||||
                        v-on:onSort="replaceRule">
 | 
			
		||||
                    <template slot="action" slot-scope="text, rule, index">
 | 
			
		||||
                        <table-sort-trigger :item-index="index"></table-sort-trigger>
 | 
			
		||||
| 
						 | 
				
			
			@ -456,14 +456,18 @@
 | 
			
		|||
                        </a-popover>
 | 
			
		||||
                    </template>
 | 
			
		||||
                    </a-table-sortable>
 | 
			
		||||
                </a-space>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
              <a-tab-pane key="tpl-outbound" tab='{{ i18n "pages.xray.Outbounds"}}' style="padding-top: 20px;" force-render="true">
 | 
			
		||||
              <a-tab-pane key="tpl-outbound" tab='{{ i18n "pages.xray.Outbounds"}}' force-render="true">
 | 
			
		||||
                <a-space direction="vertical" size="middle">
 | 
			
		||||
                    <a-row>
 | 
			
		||||
                        <a-col :xs="12" :sm="12" :lg="12">
 | 
			
		||||
                    <a-button type="primary" icon="plus" @click="addOutbound()" style="margin-bottom: 10px;">
 | 
			
		||||
                          <a-space direction="horizontal" size="small">
 | 
			
		||||
                            <a-button type="primary" icon="plus" @click="addOutbound()">
 | 
			
		||||
                                {{ i18n "pages.xray.outbound.addOutbound" }}
 | 
			
		||||
                              </a-button>
 | 
			
		||||
                    <a-button type="primary" icon="cloud" @click="showWarp()" style="margin-bottom: 10px;">WARP</a-button>
 | 
			
		||||
                            <a-button type="primary" icon="cloud" @click="showWarp()">WARP</a-button>
 | 
			
		||||
                          </a-space>
 | 
			
		||||
                        </a-col>
 | 
			
		||||
                        <a-col :xs="12" :sm="12" :lg="12" style="text-align: right;">
 | 
			
		||||
                          <a-icon type="sync" :spin="refreshing" @click="refreshOutboundTraffic()" style="margin: 0 5px;"></a-icon>
 | 
			
		||||
| 
						 | 
				
			
			@ -482,8 +486,7 @@
 | 
			
		|||
                        :data-source="outboundData"
 | 
			
		||||
                        :scroll="isMobile ? {} : { x: 800 }"
 | 
			
		||||
                        :pagination="false"
 | 
			
		||||
                    :indent-size="0"
 | 
			
		||||
                    :style="isMobile ? 'padding: 5px 5px' : 'margin-right: 1px;'">
 | 
			
		||||
                        :indent-size="0">
 | 
			
		||||
                        <template slot="action" slot-scope="text, outbound, index">
 | 
			
		||||
                          [[ index+1 ]]
 | 
			
		||||
                          <a-dropdown :trigger="['click']">
 | 
			
		||||
| 
						 | 
				
			
			@ -525,18 +528,20 @@
 | 
			
		|||
                            <a-tag color="green">[[ findOutboundTraffic(outbound) ]]</a-tag>
 | 
			
		||||
                        </template>
 | 
			
		||||
                    </a-table>
 | 
			
		||||
                </a-space>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
              <a-tab-pane key="tpl-reverse" tab='{{ i18n "pages.xray.outbound.reverse"}}' style="padding-top: 20px;" force-render="true">
 | 
			
		||||
                <a-button type="primary" icon="plus" @click="addReverse()" style="margin-bottom: 10px;">
 | 
			
		||||
                <template v-if="reverseData.length > 0">
 | 
			
		||||
                    <a-space direction="vertical" size="middle">
 | 
			
		||||
                        <a-button type="primary" icon="plus" @click="addReverse()">
 | 
			
		||||
                            {{ i18n "pages.xray.outbound.addReverse" }}
 | 
			
		||||
                        </a-button>
 | 
			
		||||
                <a-table :columns="reverseColumns" bordered v-if="reverseData.length>0"
 | 
			
		||||
                        <a-table :columns="reverseColumns" bordered
 | 
			
		||||
                            :row-key="r => r.key"
 | 
			
		||||
                            :data-source="reverseData"
 | 
			
		||||
                            :scroll="isMobile ? {} : { x: 200 }"
 | 
			
		||||
                            :pagination="false"
 | 
			
		||||
                    :indent-size="0"
 | 
			
		||||
                    :style="isMobile ? 'padding: 5px 0' : 'margin-left: 1px;'">
 | 
			
		||||
                            :indent-size="0">
 | 
			
		||||
                            <template slot="action" slot-scope="text, reverse, index">
 | 
			
		||||
                                [[ index+1 ]]
 | 
			
		||||
                                <a-dropdown :trigger="['click']">
 | 
			
		||||
| 
						 | 
				
			
			@ -555,18 +560,28 @@
 | 
			
		|||
                                </a-dropdown>
 | 
			
		||||
                            </template>
 | 
			
		||||
                        </a-table>
 | 
			
		||||
                    </a-space>
 | 
			
		||||
                </template>
 | 
			
		||||
                <template v-else>
 | 
			
		||||
                    <a-empty description='{{ i18n "emptyReverseDesc" }}' style="margin: 10px;">
 | 
			
		||||
                        <a-button type="primary" icon="plus" @click="addReverse()" style="margin-top: 10px;">
 | 
			
		||||
                            {{ i18n "pages.xray.outbound.addReverse" }}
 | 
			
		||||
                        </a-button>
 | 
			
		||||
                    </a-empty>
 | 
			
		||||
                </template>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
              <a-tab-pane key="tpl-balancer" tab='{{ i18n "pages.xray.Balancers"}}' style="padding-top: 20px;" force-render="true">
 | 
			
		||||
                <a-button type="primary" icon="plus" @click="addBalancer()" style="margin-bottom: 10px;">
 | 
			
		||||
                <template v-if="balancersData.length > 0">
 | 
			
		||||
                    <a-space direction="vertical" size="middle">
 | 
			
		||||
                        <a-button type="primary" icon="plus" @click="addBalancer()">
 | 
			
		||||
                            {{ i18n "pages.xray.balancer.addBalancer"}}
 | 
			
		||||
                        </a-button>
 | 
			
		||||
                <a-table :columns="balancerColumns" bordered v-if="balancersData.length>0"
 | 
			
		||||
                        <a-table :columns="balancerColumns" bordered 
 | 
			
		||||
                            :row-key="r => r.key"
 | 
			
		||||
                            :data-source="balancersData"
 | 
			
		||||
                            :scroll="isMobile ? {} : { x: 200 }"
 | 
			
		||||
                            :pagination="false"
 | 
			
		||||
                    :indent-size="0"
 | 
			
		||||
                    :style="isMobile ? 'padding: 5px 0' : 'margin-left: 1px;'">
 | 
			
		||||
                            :indent-size="0">
 | 
			
		||||
                            <template slot="action" slot-scope="text, balancer, index">
 | 
			
		||||
                                [[ index+1 ]]
 | 
			
		||||
                                <a-dropdown :trigger="['click']">
 | 
			
		||||
| 
						 | 
				
			
			@ -599,12 +614,20 @@
 | 
			
		|||
                            v-model="obsSettings"
 | 
			
		||||
                            @change="changeObsCode"
 | 
			
		||||
                            button-style="solid"
 | 
			
		||||
                    style="margin: 10px 0;"
 | 
			
		||||
                            :size="isMobile ? 'small' : ''">
 | 
			
		||||
                            <a-radio-button value="observatory" v-if="observatoryEnable">Observatory</a-radio-button>
 | 
			
		||||
                            <a-radio-button value="burstObservatory" v-if="burstObservatoryEnable">Burst Observatory</a-radio-button>
 | 
			
		||||
                        </a-radio-group>
 | 
			
		||||
                        <textarea style="position:absolute; left: -800px;" id="obsSetting"></textarea>
 | 
			
		||||
                    </a-space>
 | 
			
		||||
                </template>
 | 
			
		||||
                <template v-else>
 | 
			
		||||
                    <a-empty description='{{ i18n "emptyBalancersDesc" }}' style="margin: 10px;">
 | 
			
		||||
                        <a-button type="primary" icon="plus" @click="addBalancer()" style="margin-top: 10px;">
 | 
			
		||||
                            {{ i18n "pages.xray.balancer.addBalancer"}}
 | 
			
		||||
                        </a-button>
 | 
			
		||||
                    </a-empty>
 | 
			
		||||
                </template>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
            <a-tab-pane key="tpl-dns" tab='DNS' style="padding-top: 20px;" force-render="true">
 | 
			
		||||
                <a-collapse>
 | 
			
		||||
| 
						 | 
				
			
			@ -667,11 +690,12 @@
 | 
			
		|||
                    </a-collapse-panel>
 | 
			
		||||
                    <template v-if="enableDNS">
 | 
			
		||||
                        <a-collapse-panel header='DNS'>
 | 
			
		||||
                            <a-button type="primary" icon="plus" @click="addDNSServer()" style="margin: 10px;">{{ i18n
 | 
			
		||||
                            <template v-if="dnsServers.length > 0">
 | 
			
		||||
                                <a-space direction="vertical" size="middle">
 | 
			
		||||
                                    <a-button type="primary" icon="plus" @click="addDNSServer()">{{ i18n
 | 
			
		||||
                                        "pages.xray.dns.add" }}</a-button>
 | 
			
		||||
                            <a-table :columns="dnsColumns" bordered v-if="dnsServers.length>0" :row-key="r => r.key"
 | 
			
		||||
                                :data-source="dnsServers" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0"
 | 
			
		||||
                                style="margin: 10px; margin-top: 10px;">
 | 
			
		||||
                                    <a-table :columns="dnsColumns" bordered :row-key="r => r.key"
 | 
			
		||||
                                        :data-source="dnsServers" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0">
 | 
			
		||||
                                        <template slot="action" slot-scope="text,dns,index">
 | 
			
		||||
                                            [[ index+1 ]]
 | 
			
		||||
                                            <a-dropdown :trigger="['click']">
 | 
			
		||||
| 
						 | 
				
			
			@ -701,13 +725,20 @@
 | 
			
		|||
                                            <span v-if="typeof dns == 'object'">[[ dns.expectIPs.join(",") ]]</span>
 | 
			
		||||
                                        </template>
 | 
			
		||||
                                    </a-table>
 | 
			
		||||
                                </a-space>
 | 
			
		||||
                            </template>
 | 
			
		||||
                            <template v-else>
 | 
			
		||||
                                <a-empty description='{{ i18n "emptyDnsDesc" }}' style="margin: 10px;">
 | 
			
		||||
                                    <a-button type="primary" icon="plus" @click="addDNSServer()" style="margin-top: 10px;">{{ i18n "pages.xray.dns.add" }}</a-button>
 | 
			
		||||
                                </a-empty>
 | 
			
		||||
                            </template>
 | 
			
		||||
                        </a-collapse-panel>
 | 
			
		||||
                        <a-collapse-panel header='FakeDNS'>
 | 
			
		||||
                            <a-button type="primary" icon="plus" @click="addFakedns()" style="margin: 10px;">{{ i18n
 | 
			
		||||
                                "pages.xray.fakedns.add" }}</a-button>
 | 
			
		||||
                            <a-table :columns="fakednsColumns" bordered v-if="fakeDns && fakeDns.length>0" :row-key="r => r.key"
 | 
			
		||||
                                :data-source="fakeDns" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0"
 | 
			
		||||
                                style="margin: 10px; margin-top: 10px;">
 | 
			
		||||
                        <a-collapse-panel header='Fake DNS'>
 | 
			
		||||
                            <template v-if="fakeDns && fakeDns.length > 0">
 | 
			
		||||
                                <a-space direction="vertical" size="middle">
 | 
			
		||||
                                    <a-button type="primary" icon="plus" @click="addFakedns()">{{ i18n "pages.xray.fakedns.add" }}</a-button>
 | 
			
		||||
                                    <a-table :columns="fakednsColumns" bordered :row-key="r => r.key"
 | 
			
		||||
                                        :data-source="fakeDns" :scroll="isMobile ? {} : { x: 200 }" :pagination="false" :indent-size="0">
 | 
			
		||||
                                        <template slot="action" slot-scope="text,fakedns,index">
 | 
			
		||||
                                            [[ index+1 ]]
 | 
			
		||||
                                            <a-dropdown :trigger="['click']">
 | 
			
		||||
| 
						 | 
				
			
			@ -727,11 +758,19 @@
 | 
			
		|||
                                            </a-dropdown>
 | 
			
		||||
                                        </template>
 | 
			
		||||
                                    </a-table>
 | 
			
		||||
                                </a-space>
 | 
			
		||||
                            </template>
 | 
			
		||||
                            <template v-else>
 | 
			
		||||
                                <a-empty description='{{ i18n "emptyFakeDnsDesc" }}' style="margin: 20px;">
 | 
			
		||||
                                    <a-button type="primary" icon="plus" @click="addFakedns()" style="margin-top: 10px;">{{ i18n "pages.xray.fakedns.add" }}</a-button>
 | 
			
		||||
                                </a-empty>
 | 
			
		||||
                            </template>
 | 
			
		||||
                        </a-collapse-panel>
 | 
			
		||||
                    </template>
 | 
			
		||||
                </a-collapse>
 | 
			
		||||
            </a-tab-pane>
 | 
			
		||||
              <a-tab-pane key="tpl-advanced" tab='{{ i18n "pages.xray.advancedTemplate"}}' style="padding-top: 20px;" force-render="true">
 | 
			
		||||
                <a-space direction="vertical" size="small">
 | 
			
		||||
                    <a-list-item-meta title='{{ i18n "pages.xray.Template"}}' description='{{ i18n "pages.xray.TemplateDesc"}}'></a-list-item-meta>
 | 
			
		||||
                    <a-radio-group v-model="advSettings" @change="changeCode" button-style="solid" style="margin: 10px 0;" :size="isMobile ? 'small' : ''">
 | 
			
		||||
                        <a-radio-button value="xraySetting">{{ i18n "pages.xray.completeTemplate"}}</a-radio-button>
 | 
			
		||||
| 
						 | 
				
			
			@ -740,6 +779,7 @@
 | 
			
		|||
                        <a-radio-button value="routingRuleSettings">{{ i18n "pages.xray.Routings" }}</a-radio-button>
 | 
			
		||||
                    </a-radio-group>
 | 
			
		||||
                    <textarea style="position:absolute; left: -800px;" id="xraySetting"></textarea>
 | 
			
		||||
                </a-space>
 | 
			
		||||
              </a-tab-pane>
 | 
			
		||||
            </a-tabs>
 | 
			
		||||
          </a-space>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "Panel default URI path is insecure. Please configure a complex URI path."
 | 
			
		||||
"secAlertSubURI" = "Subscription default URI path is insecure. Please configure a complex URI path."
 | 
			
		||||
"secAlertSubJsonURI" = "Subscription JSON default URI path is insecure. Please configure a complex URI path."
 | 
			
		||||
"emptyDnsDesc" = "No added DNS servers."
 | 
			
		||||
"emptyFakeDnsDesc" = "No added Fake DNS servers."
 | 
			
		||||
"emptyBalancersDesc" = "No added balancers."
 | 
			
		||||
"emptyReverseDesc" = "No added reverse proxies."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Overview"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "La ruta URI predeterminada del panel no es segura. Por favor, configure una ruta URI compleja."
 | 
			
		||||
"secAlertSubURI" = "La ruta URI predeterminada de la suscripción no es segura. Por favor, configure una ruta URI compleja."
 | 
			
		||||
"secAlertSubJsonURI" = "La ruta URI JSON predeterminada de la suscripción no es segura. Por favor, configure una ruta URI compleja."
 | 
			
		||||
"emptyDnsDesc" = "No hay servidores DNS añadidos."
 | 
			
		||||
"emptyFakeDnsDesc" = "No hay servidores Fake DNS añadidos."
 | 
			
		||||
"emptyBalancersDesc" = "No hay balanceadores añadidos."
 | 
			
		||||
"emptyReverseDesc" = "No hay proxies inversos añadidos."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Estado del Sistema"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "مسیر پیشفرض لینک پنل ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید"
 | 
			
		||||
"secAlertSubURI" = "مسیر پیشفرض لینک سابسکریپشن ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید"
 | 
			
		||||
"secAlertSubJsonURI" = "مسیر پیشفرض لینک سابسکریپشن جیسون ناامن است. لطفاً یک مسیر پیچیده تنظیم کنید"
 | 
			
		||||
"emptyDnsDesc" = "هیچ سرور DNS اضافه نشده است."
 | 
			
		||||
"emptyFakeDnsDesc" = "هیچ سرور Fake DNS اضافه نشده است."
 | 
			
		||||
"emptyBalancersDesc" = "هیچ بالانسر اضافه نشده است."
 | 
			
		||||
"emptyReverseDesc" = "هیچ پروکسی معکوس اضافه نشده است."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "نمای کلی"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "Jalur URI default panel tidak aman. Harap konfigurasi jalur URI kompleks."
 | 
			
		||||
"secAlertSubURI" = "Jalur URI default langganan tidak aman. Harap konfigurasi jalur URI kompleks."
 | 
			
		||||
"secAlertSubJsonURI" = "Jalur URI default JSON langganan tidak aman. Harap konfigurasikan jalur URI kompleks."
 | 
			
		||||
"emptyDnsDesc" = "Tidak ada server DNS yang ditambahkan."
 | 
			
		||||
"emptyFakeDnsDesc" = "Tidak ada server Fake DNS yang ditambahkan."
 | 
			
		||||
"emptyBalancersDesc" = "Tidak ada penyeimbang yang ditambahkan."
 | 
			
		||||
"emptyReverseDesc" = "Tidak ada proxy terbalik yang ditambahkan."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Ikhtisar"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "デフォルトのURIパスは安全ではありません。複雑なURIパスを設定してください。"
 | 
			
		||||
"secAlertSubURI" = "サブスクリプションのデフォルトURIパスは安全ではありません。複雑なURIパスを設定してください。"
 | 
			
		||||
"secAlertSubJsonURI" = "JSONサブスクリプションのデフォルトURIパスは安全ではありません。複雑なURIパスを設定してください。"
 | 
			
		||||
"emptyDnsDesc" = "追加されたDNSサーバーはありません。"
 | 
			
		||||
"emptyFakeDnsDesc" = "追加されたFake DNSサーバーはありません。"
 | 
			
		||||
"emptyBalancersDesc" = "追加されたバランサーはありません。"
 | 
			
		||||
"emptyReverseDesc" = "追加されたリバースプロキシはありません。"
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "ダッシュボード"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "O caminho URI padrão do painel não é seguro. Configure um caminho URI complexo."
 | 
			
		||||
"secAlertSubURI" = "O caminho URI padrão de inscrição não é seguro. Configure um caminho URI complexo."
 | 
			
		||||
"secAlertSubJsonURI" = "O caminho URI JSON de inscrição padrão não é seguro. Configure um caminho URI complexo."
 | 
			
		||||
"emptyDnsDesc" = "Nenhum servidor DNS adicionado."
 | 
			
		||||
"emptyFakeDnsDesc" = "Nenhum servidor Fake DNS adicionado."
 | 
			
		||||
"emptyBalancersDesc" = "Nenhum balanceador adicionado."
 | 
			
		||||
"emptyReverseDesc" = "Nenhum proxy reverso adicionado."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Visão Geral"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "URI-путь по умолчанию панели небезопасен. Пожалуйста, настройте сложный URI-путь."
 | 
			
		||||
"secAlertSubURI" = "URI-путь по умолчанию подписки небезопасен. Пожалуйста, настройте сложный URI-путь."
 | 
			
		||||
"secAlertSubJsonURI" = "URI-путь по умолчанию для JSON подписки небезопасен. Пожалуйста, настройте сложный URI-путь."
 | 
			
		||||
"emptyDnsDesc" = "Нет добавленных DNS-серверов."
 | 
			
		||||
"emptyFakeDnsDesc" = "Нет добавленных Fake DNS-серверов."
 | 
			
		||||
"emptyBalancersDesc" = "Нет добавленных балансировщиков."
 | 
			
		||||
"emptyReverseDesc" = "Нет добавленных обратных прокси."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Статус системы"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "Panel varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın."
 | 
			
		||||
"secAlertSubURI" = "Abonelik varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın."
 | 
			
		||||
"secAlertSubJsonURI" = "Abonelik JSON varsayılan URI yolu güvensiz. Karmaşık bir URI yolu yapılandırın."
 | 
			
		||||
"emptyDnsDesc" = "Eklenmiş DNS sunucusu yok."
 | 
			
		||||
"emptyFakeDnsDesc" = "Eklenmiş Fake DNS sunucusu yok."
 | 
			
		||||
"emptyBalancersDesc" = "Eklenmiş dengeleyici yok."
 | 
			
		||||
"emptyReverseDesc" = "Eklenmiş ters proxy yok."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Genel Bakış"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "Стандартний URI-шлях панелі небезпечний. Будь ласка, сконфігуруйте складний URI-шлях."
 | 
			
		||||
"secAlertSubURI" = "Стандартний URI-шлях підписки небезпечний. Будь ласка, сконфігуруйте складний URI-шлях."
 | 
			
		||||
"secAlertSubJsonURI" = "Стандартний URI-шлях JSON підписки небезпечний. Будь ласка, сконфігуруйте складний URI-шлях."
 | 
			
		||||
"emptyDnsDesc" = "Немає доданих DNS-серверів."
 | 
			
		||||
"emptyFakeDnsDesc" = "Немає доданих Fake DNS-серверів."
 | 
			
		||||
"emptyBalancersDesc" = "Немає доданих балансувальників."
 | 
			
		||||
"emptyReverseDesc" = "Немає доданих зворотних проксі."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Огляд"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "Đường dẫn URI mặc định của bảng điều khiển không an toàn. Vui lòng cấu hình một đường dẫn URI phức tạp."
 | 
			
		||||
"secAlertSubURI" = "Đường dẫn URI mặc định của đăng ký không an toàn. Vui lòng cấu hình một đường dẫn URI phức tạp."
 | 
			
		||||
"secAlertSubJsonURI" = "Đường dẫn URI JSON mặc định của đăng ký không an toàn. Vui lòng cấu hình một đường dẫn URI phức tạp."
 | 
			
		||||
"emptyDnsDesc" = "Không có máy chủ DNS nào được thêm."
 | 
			
		||||
"emptyFakeDnsDesc" = "Không có máy chủ Fake DNS nào được thêm."
 | 
			
		||||
"emptyBalancersDesc" = "Không có bộ cân bằng tải nào được thêm."
 | 
			
		||||
"emptyReverseDesc" = "Không có proxy ngược nào được thêm."
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "Trạng thái hệ thống"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "面板默认 URI 路径不安全。请配置复杂的 URI 路径。"
 | 
			
		||||
"secAlertSubURI" = "订阅默认 URI 路径不安全。请配置复杂的 URI 路径。"
 | 
			
		||||
"secAlertSubJsonURI" = "订阅 JSON 默认 URI 路径不安全。请配置复杂的 URI 路径。"
 | 
			
		||||
"emptyDnsDesc" = "未添加DNS服务器。"
 | 
			
		||||
"emptyFakeDnsDesc" = "未添加Fake DNS服务器。"
 | 
			
		||||
"emptyBalancersDesc" = "未添加负载均衡器。"
 | 
			
		||||
"emptyReverseDesc" = "未添加反向代理。"
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "系统状态"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,6 +61,10 @@
 | 
			
		|||
"secAlertPanelURI" = "面板預設 URI 路徑不安全。請配置複雜的 URI 路徑。"
 | 
			
		||||
"secAlertSubURI" = "訂閱預設 URI 路徑不安全。請配置複雜的 URI 路徑。"
 | 
			
		||||
"secAlertSubJsonURI" = "訂閱 JSON 預設 URI 路徑不安全。請配置複雜的 URI 路徑。"
 | 
			
		||||
"emptyDnsDesc" = "未添加DNS伺服器。"
 | 
			
		||||
"emptyFakeDnsDesc" = "未添加Fake DNS伺服器。"
 | 
			
		||||
"emptyBalancersDesc" = "未添加負載平衡器。"
 | 
			
		||||
"emptyReverseDesc" = "未添加反向代理。"
 | 
			
		||||
 | 
			
		||||
[menu]
 | 
			
		||||
"dashboard" = "系統狀態"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue