mirror of
https://github.com/MountCloud/FireDog.git
synced 2026-10-16 20:20:49 +08:00
国际化
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
#include "FireDogSwitchLanguage.h"
|
||||
|
||||
#include "Qss/Qss.h"
|
||||
#include "gui18n.h"
|
||||
|
||||
using namespace Ui;
|
||||
|
||||
FireDogSwitchLanguageUi::FireDogSwitchLanguageUi(QWidget *parent) :
|
||||
QssDialog(parent),
|
||||
ui(new Ui::FireDogSwitchLanguageClass)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
//this->setWindowFlags(Qt::WindowCloseButtonHint | Qt::Dialog);
|
||||
//this->setFixedSize(this->width(), this->height());
|
||||
//this->setModal(true);
|
||||
|
||||
//i18n
|
||||
QString i18nlanguagetitle = Gui18n::GetInstance()->GetConfig("switch-language-window-title", "Language");
|
||||
QString i18nlablelanguage = Gui18n::GetInstance()->GetConfig("switch-language-lable-language", "Language:");
|
||||
QString i18nlablenowlanguage = Gui18n::GetInstance()->GetConfig("switch-language-lable-now-language", "NowLanguage:");
|
||||
QString i18nbuttonsetlanguage = Gui18n::GetInstance()->GetConfig("switch-language-button-set-language", "SetLanguage");
|
||||
|
||||
this->setWindowTitle(i18nlanguagetitle);
|
||||
ui->labelLanguage->setText(i18nlablelanguage);
|
||||
ui->pushButtonSetLanguage->setText(i18nbuttonsetlanguage);
|
||||
ui->labelNowLanguageMsg->setText(i18nlablenowlanguage);
|
||||
connect(ui->pushButtonSetLanguage, SIGNAL(clicked()), this, SLOT(slots_setbtnclick()));
|
||||
|
||||
this->hide();
|
||||
}
|
||||
|
||||
void FireDogSwitchLanguageUi::showEvent(QShowEvent* event) {
|
||||
ui->pushButtonSetLanguage->setEnabled(false);
|
||||
|
||||
int languageCount = reloadLanguages();
|
||||
if (languageCount == 0) {
|
||||
QString mbtitle = Gui18n::GetInstance()->GetConfig("text-message-box-title-warning", "Warning");
|
||||
QString mbcontent = Gui18n::GetInstance()->GetConfig("switch-language-message-no-language-items", "The list of language options is empty.");
|
||||
QssMessageBox::warn(mbcontent, this, mbtitle);
|
||||
}
|
||||
if (languageCount > 0) {
|
||||
ui->pushButtonSetLanguage->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
int FireDogSwitchLanguageUi::reloadLanguages() {
|
||||
|
||||
ui->comboBoxLanguage->clear();
|
||||
QString nowLanguage = Gui18n::GetInstance()->GetNowLanguage();
|
||||
ui->labelNowLanguage->setText(nowLanguage);
|
||||
|
||||
QVector<QString> languages = Gui18n::GetInstance()->GetLanguages();
|
||||
int result = languages.size();
|
||||
if (result > 0) {
|
||||
for (int i = 0; i < result; i++) {
|
||||
QString language = languages[i];
|
||||
ui->comboBoxLanguage->addItem(language);
|
||||
}
|
||||
if (languages.contains(nowLanguage)) {
|
||||
ui->comboBoxLanguage->setCurrentText(nowLanguage);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void FireDogSwitchLanguageUi::slots_setbtnclick() {
|
||||
QString setlanguageStr = ui->comboBoxLanguage->currentText();
|
||||
QString nowLanguage = Gui18n::GetInstance()->GetNowLanguage();
|
||||
if (setlanguageStr == nowLanguage) {
|
||||
QString mbtitle = Gui18n::GetInstance()->GetConfig("text-message-box-title-information", "Tips");
|
||||
QString mbcontent = Gui18n::GetInstance()->GetConfig("switch-language-message-no-changed", "The set language has not changed from the current language.");
|
||||
QssMessageBox::information(this, mbtitle, mbcontent);
|
||||
return;
|
||||
}
|
||||
|
||||
QString mbtitle = Gui18n::GetInstance()->GetConfig("text-message-box-title-information", "Tips");
|
||||
QString mbcontent = Gui18n::GetInstance()->GetConfig("switch-language-message-update-language-tips", "Changing the language will restart the application.");
|
||||
QssMessageBox::information(this, mbtitle, mbcontent);
|
||||
|
||||
this->hide();
|
||||
Gui18n::GetInstance()->SetLanguage(setlanguageStr);
|
||||
emit switchSuccess();
|
||||
}
|
||||
|
||||
FireDogSwitchLanguageUi::~FireDogSwitchLanguageUi()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef FireDogSwitchLanguage_H
|
||||
#define FireDogSwitchLanguage_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QDialog>
|
||||
#include "ui_FireDogSwitchLanguage.h"
|
||||
|
||||
#include "Qss/Qss.h"
|
||||
|
||||
namespace Ui {
|
||||
class FireDogSwitchLanguageUi : public QssDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
signals:
|
||||
void switchSuccess();
|
||||
public:
|
||||
explicit FireDogSwitchLanguageUi(QWidget* parent = nullptr);
|
||||
~FireDogSwitchLanguageUi();
|
||||
|
||||
private:
|
||||
Ui::FireDogSwitchLanguageClass* ui;
|
||||
int reloadLanguages();
|
||||
void showEvent(QShowEvent* event) override;
|
||||
private slots:
|
||||
void slots_setbtnclick();
|
||||
};
|
||||
}
|
||||
|
||||
#endif // FireDogSwitchLanguage_H
|
||||
@@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>FireDogSwitchLanguageClass</class>
|
||||
<widget class="QDialog" name="FireDogSwitchLanguageClass">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>310</width>
|
||||
<height>138</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>310</width>
|
||||
<height>138</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="labelLanguage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>52</y>
|
||||
<width>100</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Language:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QComboBox" name="comboBoxLanguage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>120</x>
|
||||
<y>50</y>
|
||||
<width>151</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButtonSetLanguage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>80</x>
|
||||
<y>90</y>
|
||||
<width>151</width>
|
||||
<height>31</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SetLanguage</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="labelNowLanguageMsg">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>20</y>
|
||||
<width>100</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>NowLanguage:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="labelNowLanguage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>120</x>
|
||||
<y>20</y>
|
||||
<width>151</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -0,0 +1,166 @@
|
||||
#include "gui18n.h"
|
||||
|
||||
#include <qdebug.h>
|
||||
#include <qjsonobject.h>
|
||||
#include <qjsondocument.h>
|
||||
#include <qdir.h>
|
||||
#include <qapplication.h>
|
||||
|
||||
Gui18n* Gui18n::instance = nullptr;
|
||||
|
||||
Gui18n::Gui18n() {
|
||||
|
||||
}
|
||||
|
||||
void Gui18n::init()
|
||||
{
|
||||
this->now_language = GetNowLanguage();
|
||||
|
||||
QString apppath = QApplication::applicationDirPath();
|
||||
QString languagePath = apppath + GUI_18N_CONFIG_DIR_NAME + this->now_language + ".json";
|
||||
QFile languageFile(languagePath);
|
||||
if (languageFile.open(QIODevice::ReadOnly)) {
|
||||
QByteArray allData = languageFile.readAll();
|
||||
languageFile.close();
|
||||
|
||||
QJsonParseError jsonError;
|
||||
QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &jsonError));
|
||||
|
||||
if (jsonError.error == QJsonParseError::NoError)
|
||||
{
|
||||
QJsonObject rootObj = jsonDoc.object();
|
||||
QStringList qlist = rootObj.keys();
|
||||
for (int i = 0; i < qlist.size(); i++) {
|
||||
QString key = qlist[i];
|
||||
QString value = rootObj.value(key).toString();
|
||||
this->configs[key] = value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
qDebug() << "language parse json fail." << jsonError.errorString();
|
||||
}
|
||||
}
|
||||
else {
|
||||
qDebug() << "language open file fail.";
|
||||
}
|
||||
}
|
||||
|
||||
Gui18n* Gui18n::GetInstance() {
|
||||
if (instance == nullptr) {
|
||||
instance = new Gui18n();
|
||||
instance->init();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
QString Gui18n::GetConfig(QString name) {
|
||||
return this->GetConfig(name,"");
|
||||
}
|
||||
|
||||
QString Gui18n::GetConfig(QString name,QString defstr) {
|
||||
if (this->configs.find(name) != this->configs.end()) {
|
||||
return this->configs[name];
|
||||
}
|
||||
return defstr;
|
||||
}
|
||||
|
||||
QString Gui18n::GetNowLanguage() {
|
||||
QString apppath = QApplication::applicationDirPath();
|
||||
QString languageConfigPath = apppath + "/" + GUI_18N_CONFIG_FILE_NAME;
|
||||
|
||||
QFile languageConfigFile(languageConfigPath);
|
||||
if (!languageConfigFile.exists()) {
|
||||
|
||||
if (languageConfigFile.open(QIODevice::WriteOnly)) {
|
||||
QJsonObject config;
|
||||
config["language"] = "en-us";
|
||||
QJsonDocument document;
|
||||
document.setObject(config);
|
||||
languageConfigFile.write(document.toJson());
|
||||
languageConfigFile.flush();
|
||||
languageConfigFile.close();
|
||||
}
|
||||
else {
|
||||
qDebug() << "language config not exists,open file fail.";
|
||||
}
|
||||
return GUI_18N_DEFAULT_LANGUAGE;
|
||||
}
|
||||
else {
|
||||
if (languageConfigFile.open(QIODevice::ReadOnly)) {
|
||||
QByteArray allData = languageConfigFile.readAll();
|
||||
languageConfigFile.close();
|
||||
|
||||
QJsonParseError jsonError;
|
||||
QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &jsonError));
|
||||
|
||||
if (jsonError.error != QJsonParseError::NoError)
|
||||
{
|
||||
qDebug() << "json error!" << jsonError.errorString();
|
||||
this->now_language = GUI_18N_DEFAULT_LANGUAGE;
|
||||
return this->now_language;
|
||||
}
|
||||
|
||||
QJsonObject rootObj = jsonDoc.object();
|
||||
QString language = rootObj.value("language").toString();
|
||||
if (language.isEmpty()) {
|
||||
SetLanguage(GUI_18N_DEFAULT_LANGUAGE);
|
||||
}
|
||||
else {
|
||||
return language;
|
||||
}
|
||||
}
|
||||
else {
|
||||
qDebug() << "language config open file fail.";
|
||||
return GUI_18N_DEFAULT_LANGUAGE;
|
||||
}
|
||||
}
|
||||
return GUI_18N_DEFAULT_LANGUAGE;
|
||||
}
|
||||
|
||||
void Gui18n::SetLanguage(QString language) {
|
||||
if (language==this->now_language) {
|
||||
return;
|
||||
}
|
||||
this->now_language = language;
|
||||
this->configs.clear();
|
||||
|
||||
QString apppath = QApplication::applicationDirPath();
|
||||
QString languageConfigPath = apppath + "/" + GUI_18N_CONFIG_FILE_NAME;
|
||||
QFile languageConfigFile(languageConfigPath);
|
||||
if (languageConfigFile.open(QIODevice::WriteOnly)) {
|
||||
QJsonObject config;
|
||||
config["language"] = language;
|
||||
QJsonDocument document;
|
||||
document.setObject(config);
|
||||
languageConfigFile.write(document.toJson());
|
||||
languageConfigFile.flush();
|
||||
languageConfigFile.close();
|
||||
}
|
||||
|
||||
instance->init();
|
||||
}
|
||||
|
||||
QVector<QString> Gui18n::GetLanguages() {
|
||||
QVector<QString> result;
|
||||
|
||||
QString apppath = QApplication::applicationDirPath();
|
||||
QString languageDirPath = apppath + GUI_18N_CONFIG_DIR_NAME;
|
||||
QDir languageDir(languageDirPath);
|
||||
|
||||
if (languageDir.exists()) {
|
||||
QFileInfoList fileInfoListInSplDir = languageDir.entryInfoList(QDir::Files);
|
||||
QFileInfo tempFileInfo;
|
||||
foreach(tempFileInfo, fileInfoListInSplDir) {
|
||||
// absoluteFilePath() -- 截取到的是文件夹的路径
|
||||
// absolutePath() -- 截取的是文件夹所在路径
|
||||
//filePathNames << tempFileInfo.absoluteFilePath();
|
||||
QString filename = tempFileInfo.fileName();
|
||||
if (filename.endsWith(".json")) {
|
||||
QString basefilename = tempFileInfo.baseName();
|
||||
result.push_back(basefilename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef __FIREKYLIN_GUI_I18N_H__
|
||||
#define __FIREKYLIN_GUI_I18N_H__
|
||||
#include <QHash>
|
||||
#include <qstring.h>
|
||||
#include <qvector.h>
|
||||
|
||||
#define GUI_18N_CONFIG_DIR_NAME "/fdlanguages/"
|
||||
#define GUI_18N_CONFIG_FILE_NAME "firedog.i18n.config.json"
|
||||
#define GUI_18N_DEFAULT_LANGUAGE "en-us"
|
||||
|
||||
class Gui18n
|
||||
{
|
||||
public:
|
||||
static Gui18n* GetInstance();
|
||||
QString GetNowLanguage();
|
||||
//ËùÓеÄÓïÑÔ
|
||||
QVector<QString> GetLanguages();
|
||||
QString GetConfig(QString name);
|
||||
QString GetConfig(QString name, QString defstr);
|
||||
void SetLanguage(QString language);
|
||||
private:
|
||||
QString now_language;
|
||||
QHash<QString, QString> configs;
|
||||
Gui18n();
|
||||
static Gui18n* instance;
|
||||
void init();
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,91 @@
|
||||
#include "gui18nutil.h"
|
||||
|
||||
#include "gui18n.h"
|
||||
|
||||
QString Gui18nUtil::GetNowLanguage() {
|
||||
return Gui18n::GetInstance()->GetNowLanguage();
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QCheckBox* obj, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QRadioButton* obj, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QGroupBox* obj, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setTitle(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QMenu* obj, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setTitle(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QAction* obj, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QLabel* obj, QString name)
|
||||
{
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QLineEdit* obj, QString name)
|
||||
{
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setPlaceholderText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QPushButton* obj, QString name)
|
||||
{
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
void Gui18nUtil::SetText(QTabWidget* obj,int index, QString name) {
|
||||
Gui18n* gui18n = Gui18n::GetInstance();
|
||||
|
||||
QString text = gui18n->GetConfig(name);
|
||||
if (!text.isEmpty()) {
|
||||
obj->setTabText(index, text);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef __FIREKYLIN_GUI_I18NUTIL_H__
|
||||
#define __FIREKYLIN_GUI_I18NUTIL_H__
|
||||
|
||||
#include <QGroupBox>
|
||||
#include <QMenu>
|
||||
#include <QTabWidget>
|
||||
#include <QLabel>
|
||||
#include <QCheckBox>
|
||||
#include <QRadioButton>
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
|
||||
class Gui18nUtil
|
||||
{
|
||||
public:
|
||||
static QString GetNowLanguage();
|
||||
|
||||
static void SetText(QCheckBox* obj, QString name);
|
||||
static void SetText(QRadioButton* obj, QString name);
|
||||
static void SetText(QGroupBox* obj,QString name);
|
||||
static void SetText(QMenu* obj, QString name);
|
||||
static void SetText(QAction* obj, QString name);
|
||||
static void SetText(QLabel* obj, QString name);
|
||||
static void SetText(QLineEdit* obj, QString name);
|
||||
static void SetText(QPushButton* obj, QString name);
|
||||
static void SetText(QTabWidget* obj,int index, QString name);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"menu-operation": "Operation",
|
||||
"menu-operation-open": "Open",
|
||||
"menu-operation-save": "Save",
|
||||
"menu-operation-saveto": "Save To",
|
||||
"menu-setting": "Setting",
|
||||
"menu-setting-language": "Language",
|
||||
"menu-help": "Help",
|
||||
"menu-help-reportissue": "ReportIssue",
|
||||
"menu-help-github": "Github",
|
||||
"menu-help-about": "About",
|
||||
|
||||
"main-tab-feature-library": "Feature Library",
|
||||
"main-tab-matching": "Matching",
|
||||
|
||||
"feature-search":"Search",
|
||||
"feature-search-txt-tip":"Please enter",
|
||||
"feature-search-btn":"Search",
|
||||
|
||||
"feature-librarys":"Librarays",
|
||||
"feature-librarys-name":"Name",
|
||||
"feature-librarys-describe":"Describe",
|
||||
"feature-librarys-author":"Author",
|
||||
|
||||
"feature-info":"Info",
|
||||
"feature-info-name":"Name",
|
||||
"feature-info-author":"Author",
|
||||
"feature-info-describe":"Describe",
|
||||
"feature-info-features":"Features",
|
||||
"feature-info-features-key":"Key",
|
||||
"feature-info-features-type":"Type",
|
||||
"feature-info-features-content":"Content",
|
||||
"feature-info-rule":"Rule",
|
||||
|
||||
"feature-info-btn-add":"Add",
|
||||
"feature-info-btn-update":"Update",
|
||||
|
||||
"text-message-box-title-question": "Confirm",
|
||||
"text-message-box-title-information": "Tips",
|
||||
"text-message-box-title-warning": "Warning",
|
||||
"text-message-box-title-critical": "Critical",
|
||||
|
||||
"switch-language-window-title": "Language",
|
||||
"switch-language-lable-language": "Language:",
|
||||
"switch-language-lable-now-language": "NowLanguage:",
|
||||
"switch-language-button-set-language": "SetLanguage",
|
||||
"switch-language-message-no-changed": "The set language has not changed from the current language.",
|
||||
"switch-language-message-no-language-items": "The list of language options is empty.",
|
||||
"switch-language-message-update-language-tips": "Changing the language will restart the application."
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"menu-operation": "操作",
|
||||
"menu-operation-open": "打开",
|
||||
"menu-operation-save": "保存",
|
||||
"menu-operation-saveto": "保存到",
|
||||
"menu-setting": "设置",
|
||||
"menu-setting-language": "语言",
|
||||
"menu-help": "帮助",
|
||||
"menu-help-reportissue": "问题反馈",
|
||||
"menu-help-github": "Github",
|
||||
"menu-help-about": "关于",
|
||||
|
||||
"main-tab-feature-library": "特征库",
|
||||
"main-tab-matching": "检测",
|
||||
|
||||
"feature-search":"搜索",
|
||||
"feature-search-txt-tip":"请输入",
|
||||
"feature-search-btn":"搜索",
|
||||
|
||||
"feature-librarys":"库",
|
||||
"feature-librarys-name":"名称",
|
||||
"feature-librarys-describe":"描述",
|
||||
"feature-librarys-author":"作者",
|
||||
|
||||
"feature-info":"详情",
|
||||
"feature-info-name":"名称",
|
||||
"feature-info-author":"作者",
|
||||
"feature-info-describe":"描述",
|
||||
"feature-info-features":"特征",
|
||||
"feature-info-features-key":"Key",
|
||||
"feature-info-features-type":"类型",
|
||||
"feature-info-features-content":"内容",
|
||||
"feature-info-rule":"规则",
|
||||
|
||||
"feature-info-btn-add":"添加",
|
||||
"feature-info-btn-update":"修改",
|
||||
|
||||
"text-message-box-title-question": "请确认",
|
||||
"text-message-box-title-information": "提示",
|
||||
"text-message-box-title-warning": "警告",
|
||||
"text-message-box-title-critical": "错误",
|
||||
|
||||
"switch-language-window-title": "语言",
|
||||
"switch-language-lable-language": "语言:",
|
||||
"switch-language-lable-now-language": "当前语言:",
|
||||
"switch-language-button-set-language": "设置语言",
|
||||
"switch-language-message-no-changed": "设置的语言与当前语言一致未作出改变。",
|
||||
"switch-language-message-no-language-items": "语言选项列表为空。",
|
||||
"switch-language-message-update-language-tips": "修改语言将会重启应用程序。"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"language": "zh-cn"
|
||||
}
|
||||
Reference in New Issue
Block a user