parent
26da531774
commit
9767dc6945
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -14,6 +14,7 @@ from scripts.physton_prompt.translator.translators_translator import Translators
|
|||
from scripts.physton_prompt.translator.yandex_translator import YandexTranslator
|
||||
from scripts.physton_prompt.translator.youdao_translator import YoudaoTranslator
|
||||
from scripts.physton_prompt.translator.mymemory_translator import MyMemoryTranslator
|
||||
from scripts.physton_prompt.translator.niutrans_translator import NiutransTranslator
|
||||
|
||||
caches = {}
|
||||
|
||||
|
|
@ -98,6 +99,8 @@ def translate(text, from_lang, to_lang, api, api_config=None):
|
|||
translator = TencentTranslator()
|
||||
elif api == 'myMemory_free' or api == 'myMemory':
|
||||
translator = MyMemoryTranslator()
|
||||
elif api == 'niutrans':
|
||||
translator = NiutransTranslator()
|
||||
elif 'type' in find and find['type'] == 'translators':
|
||||
translator = TranslatorsTranslator(api)
|
||||
translator.set_translator(find['translator'])
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
|
||||
import uuid
|
||||
import requests
|
||||
from scripts.physton_prompt.get_lang import get_lang
|
||||
|
||||
|
||||
class NiutransTranslator(BaseTranslator):
|
||||
def __init__(self):
|
||||
super().__init__('niutrans')
|
||||
|
||||
def translate(self, text):
|
||||
if not text:
|
||||
return ''
|
||||
url = 'https://api.niutrans.com/NiuTransServer/translation'
|
||||
api_key = self.api_config.get('api_key', '')
|
||||
if not api_key:
|
||||
raise Exception(get_lang('is_required', {'0': 'API Key'}))
|
||||
data = {
|
||||
'from': self.from_lang,
|
||||
'to': self.to_lang,
|
||||
'apikey': api_key,
|
||||
'src_text': text,
|
||||
}
|
||||
|
||||
response = requests.post(url, data=data)
|
||||
if response.status_code != 200:
|
||||
raise Exception(get_lang('request_error', {'0': 'niutrans'}))
|
||||
if not response.text:
|
||||
raise Exception(get_lang('response_is_empty', {'0': 'niutrans'}))
|
||||
result = response.json()
|
||||
if 'tgt_text' not in result:
|
||||
raise Exception(get_lang('no_response_from', {'0': 'niutrans'}))
|
||||
return result['tgt_text']
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
<select v-model="apiKey">
|
||||
<optgroup v-for="typeGroup in supportApi" :key="typeGroup.type"
|
||||
:label="getLang(typeGroup.type)">
|
||||
<option v-for="item in typeGroup.children" :key="item.key" :value="item.key">
|
||||
<option v-for="item in typeGroup.children" :key="item.key" :value="item.key" :disabled="item.disabled">
|
||||
{{ getItemName(item) }}
|
||||
</option>
|
||||
</optgroup>
|
||||
|
|
@ -137,7 +137,10 @@ Github: Physton/sd-webui-prompt-all-in-one`,
|
|||
if (!this.translateApis || this.translateApis.length <= 0) return []
|
||||
let api = JSON.parse(JSON.stringify(this.translateApis))
|
||||
api.forEach(group => {
|
||||
group.children = group.children.filter(item => item.support[this.languageCode])
|
||||
// group.children = group.children.filter(item => item.support[this.languageCode])
|
||||
group.children.forEach(item => {
|
||||
item.disabled = !item.support[this.languageCode]
|
||||
})
|
||||
})
|
||||
return api
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ from scripts.physton_prompt.translator.tencent_translator import TencentTranslat
|
|||
from scripts.physton_prompt.translator.translators_translator import TranslatorsTranslator
|
||||
from scripts.physton_prompt.translator.yandex_translator import YandexTranslator
|
||||
from scripts.physton_prompt.translator.mymemory_translator import MyMemoryTranslator
|
||||
from scripts.physton_prompt.translator.niutrans_translator import NiutransTranslator
|
||||
|
||||
from scripts.physton_prompt.translate import translate
|
||||
from scripts.physton_prompt.get_i18n import get_i18n
|
||||
|
|
@ -129,6 +130,13 @@ def test_mymemory():
|
|||
print(translate(text, 'en_US', 'zh_TW', 'myMemory_free', api_config))
|
||||
print(translate(texts, 'en_US', 'zh_CN', 'myMemory_free', api_config))
|
||||
|
||||
def test_niutrans():
|
||||
api_config = {
|
||||
'api_key': os.getenv('NIUTRANS_API_KEY')
|
||||
}
|
||||
print(translate(text, 'en_US', 'zh_TW', 'niutrans', api_config))
|
||||
print(translate(texts, 'en_US', 'zh_CN', 'niutrans', api_config))
|
||||
|
||||
def test_languages():
|
||||
i18n = get_i18n()
|
||||
languages = []
|
||||
|
|
@ -142,4 +150,4 @@ def test_languages():
|
|||
print(translate(text, 'en_US', lang, 'myMemory_free'))
|
||||
pass
|
||||
|
||||
test_mymemory()
|
||||
test_niutrans()
|
||||
|
|
|
|||
|
|
@ -2917,6 +2917,134 @@
|
|||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "niutrans",
|
||||
"name": "[ApiKey] Niutrans / 小牛翻译 [200,000 chars/day]",
|
||||
"concurrent": 40,
|
||||
"support": {
|
||||
"zh_CN": "zh",
|
||||
"zh_HK": "cht",
|
||||
"zh_TW": "cht",
|
||||
"en_US": "en",
|
||||
"en_GB": "en",
|
||||
"af_ZA": "af",
|
||||
"sq_AL": "sq",
|
||||
"am_ET": "am",
|
||||
"ar_SA": "ar",
|
||||
"hy_AM": "hy",
|
||||
"az_Latn_AZ": "az",
|
||||
"bn_BD": "bn",
|
||||
"ba_RU": "ba",
|
||||
"eu_ES": "eu",
|
||||
"bs_Latn_BA": "bs",
|
||||
"bg_BG": "bg",
|
||||
"ca_ES": "ca",
|
||||
"hr_HR": "hr",
|
||||
"cs_CZ": "cs",
|
||||
"da_DK": "da",
|
||||
"dv_MV": "dv",
|
||||
"nl_NL": "nl",
|
||||
"et_EE": "et",
|
||||
"fo_FO": "fo",
|
||||
"fj_FJ": "fj",
|
||||
"fil_PH": "fil",
|
||||
"fi_FI": "fi",
|
||||
"fr_FR": "fr",
|
||||
"fr_CA": "fr",
|
||||
"gl_ES": "gl",
|
||||
"ka_GE": "ka",
|
||||
"de_DE": "de",
|
||||
"el_GR": "el",
|
||||
"gu_IN": "gu",
|
||||
"ht_HT": "ht",
|
||||
"he_IL": "he",
|
||||
"hi_IN": "hi",
|
||||
"mww_Latn_US": "mww",
|
||||
"hu_HU": "hu",
|
||||
"is_IS": "is",
|
||||
"id_ID": "id",
|
||||
"ga_IE": "ga",
|
||||
"it_IT": "it",
|
||||
"ja_JP": "ja",
|
||||
"kn_IN": "kn",
|
||||
"kk_KZ": "kk",
|
||||
"km_KH": "km",
|
||||
"ko_KR": "ko",
|
||||
"ku_Arab_IQ": "ku",
|
||||
"ku_Latn_TR": "ku",
|
||||
"ky_KG": "ky",
|
||||
"lo_LA": "lo",
|
||||
"lv_LV": "lv",
|
||||
"lt_LT": "lt",
|
||||
"mk_MK": "mk",
|
||||
"mg_MG": "mg",
|
||||
"ms_Latn_MY": "ms",
|
||||
"ml_IN": "ml",
|
||||
"mt_MT": "mt",
|
||||
"mi_NZ": "mi",
|
||||
"mr_IN": "mr",
|
||||
"mn_Cyrl_MN": "mn",
|
||||
"mn_Mong_CN": "mn",
|
||||
"my_MM": "my",
|
||||
"ne_NP": "ne",
|
||||
"no_NO": "no",
|
||||
"or_IN": "or",
|
||||
"ps_AF": "ps",
|
||||
"fa_IR": "fa",
|
||||
"pl_PL": "pl",
|
||||
"pt_BR": "pt",
|
||||
"pt_PT": "pt",
|
||||
"pa_Guru_IN": "pa",
|
||||
"otq_Latn_MX": "otq",
|
||||
"ro_RO": "ro",
|
||||
"ru_RU": "ru",
|
||||
"sm_Latn_WS": "sm",
|
||||
"sr_Cyrl_RS": "sr",
|
||||
"sr_Latn_RS": "sr",
|
||||
"sk_SK": "sk",
|
||||
"sl_SI": "sl",
|
||||
"so_SO": "so",
|
||||
"es_ES": "es",
|
||||
"sw_KE": "sw",
|
||||
"sv_SE": "sv",
|
||||
"ty_PF": "ty",
|
||||
"ta_IN": "ta",
|
||||
"tt_Latn_RU": "tt",
|
||||
"te_IN": "te",
|
||||
"th_TH": "th",
|
||||
"ti_ET": "ti",
|
||||
"to_TO": "to",
|
||||
"tr_TR": "tr",
|
||||
"uk_UA": "uk",
|
||||
"ur_PK": "ur",
|
||||
"uz_Latn_UZ": "uz",
|
||||
"vi_VN": "vi",
|
||||
"cy_GB": "cy",
|
||||
"yua_MX": "yua",
|
||||
"zu_ZA": "zu"
|
||||
},
|
||||
"help": [
|
||||
{
|
||||
"title": "[official] 小牛翻译",
|
||||
"url": "https://niutrans.com/documents/contents/beginning_guide/6"
|
||||
},
|
||||
{
|
||||
"title": "【中文】申请教程 by BobTranslate",
|
||||
"url": "https://bobtranslate.com/service/translate/niu.html"
|
||||
},
|
||||
{
|
||||
"title": "【中文】申请教程 by TTime",
|
||||
"url": "https://ttime.timerecord.cn/pages/cc1bc7/"
|
||||
}
|
||||
],
|
||||
"config": [
|
||||
{
|
||||
"key": "api_key",
|
||||
"title": "API Key",
|
||||
"type": "input"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue