這是一個高級翻譯插件,可用於自動翻譯基於 Unity 的遊戲,還提供手動翻譯遊戲所需的工具。
它(顯然)會連接到互聯網,以提供自動翻譯,因此如果您對此不滿意,請不要使用它。
如果您打算重新分發此外掛程式作為遊戲翻譯套件的一部分,請閱讀本節和有關手動翻譯的部分,以便了解該插件的運作方式。
該 mod 可以在沒有任何外部依賴項的情況下安裝,也可以作為以下插件管理器/Mod 載入器的插件進行安裝:
所有方法的安裝說明都可以在下面找到。
該插件可以透過以下方式安裝:
要求:不需要,此下載提供了 ReiPatcher。
非常重要的注意事項:使用此方法是透過兩次簡單的點擊即可使外掛程式在大多數 Unity 遊戲中運行的特定方法。請注意,如果使用受支援的外掛程式管理器之一,則應避免這種安裝方法,因為它會導致問題。
VERY IMPORTANT NOTE
。文件結構應該像這樣
{GameDirectory}/ReiPatcher/Patches/XUnity.AutoTranslator.Patcher.dll
{GameDirectory}/ReiPatcher/ExIni.dll
{GameDirectory}/ReiPatcher/Mono.Cecil.dll
{GameDirectory}/ReiPatcher/Mono.Cecil.Inject.dll
{GameDirectory}/ReiPatcher/Mono.Cecil.Mdb.dll
{GameDirectory}/ReiPatcher/Mono.Cecil.Pdb.dll
{GameDirectory}/ReiPatcher/Mono.Cecil.Rocks.dll
{GameDirectory}/ReiPatcher/ReiPatcher.exe
{GameDirectory}/{GameExeName}_Data/Managed/ReiPatcher.exe
{GameDirectory}/{GameExeName}_Data/Managed/XUnity.Common.dll
{GameDirectory}/{GameExeName}_Data/Managed/XUnity.ResourceRedirector.dll
{GameDirectory}/{GameExeName}_Data/Managed/XUnity.AutoTranslator.Plugin.Core.dll
{GameDirectory}/{GameExeName}_Data/Managed/XUnity.AutoTranslator.Plugin.ExtProtocol.dll
{GameDirectory}/{GameExeName}_Data/Managed/MonoMod.RuntimeDetour.dll
{GameDirectory}/{GameExeName}_Data/Managed/MonoMod.Utils.dll
{GameDirectory}/{GameExeName}_Data/Managed/Mono.Cecil.dll
{GameDirectory}/{GameExeName}_Data/Managed/0Harmony.dll
{GameDirectory}/{GameExeName}_Data/Managed/ExIni.dll
{GameDirectory}/{GameExeName}_Data/Managed/Translators/{Translator}.dll
{GameDirectory}/AutoTranslator/Translation/AnyTranslationFile.txt (these files will be auto generated by plugin!)
注意:放置在 ReiPatcher 目錄中的Mono.Cecil.dll
檔案與放置在 Managed 目錄中的檔案不同。
需要:BepInEx 外掛程式管理器(首先按照其安裝說明進行操作!)。
文件結構應該是這樣的:
{GameDirectory}/BepInEx/core/XUnity.Common.dll
{GameDirectory}/BepInEx/plugins/XUnity.ResourceRedirector/XUnity.ResourceRedirector.dll
{GameDirectory}/BepInEx/plugins/XUnity.ResourceRedirector/XUnity.ResourceRedirector.BepInEx.dll
{GameDirectory}/BepInEx/plugins/XUnity.AutoTranslator/XUnity.AutoTranslator.Plugin.Core.dll
{GameDirectory}/BepInEx/plugins/XUnity.AutoTranslator/XUnity.AutoTranslator.Plugin.BepInEx.dll
{GameDirectory}/BepInEx/plugins/XUnity.AutoTranslator/XUnity.AutoTranslator.Plugin.ExtProtocol.dll
{GameDirectory}/BepInEx/plugins/XUnity.AutoTranslator/ExIni.dll
{GameDirectory}/BepInEx/plugins/XUnity.AutoTranslator/Translators/{Translator}.dll
{GameDirectory}/BepInEx/core/MonoMod.RuntimeDetour.dll
{GameDirectory}/BepInEx/core/MonoMod.Utils.dll
{GameDirectory}/BepInEx/core/Mono.Cecil.dll
{GameDirectory}/BepInEx/Translation/AnyTranslationFile.txt (these files will be auto generated by plugin!)
IL2CPP 的安裝說明與標準版本相同,只是您必須為 IL2CPP 安裝 BepInEx 6,在撰寫本文時,該版本僅作為前沿版本提供,並且您必須使用此插件的BepInEx-IL2CPP
包反而。
目前版本 (5.4.0) 是針對前緣版本 704 所建構的。
需要:Melon Loader(首先按照其安裝說明進行操作!)。
文件結構應該是這樣的:
{GameDirectory}/Mods/XUnity.AutoTranslator.Plugin.MelonMod.dll
{GameDirectory}/UserLibs/XUnity.Common.dll
{GameDirectory}/UserLibs/XUnity.ResourceRedirector.dll
{GameDirectory}/UserLibs/XUnity.AutoTranslator.Plugin.Core.dll
{GameDirectory}/UserLibs/XUnity.AutoTranslator.Plugin.ExtProtocol.dll
{GameDirectory}/UserLibs/ExIni.dll
{GameDirectory}/UserLibs/Translators/{Translator}.dll
{GameDirectory}/AutoTranslator/Translation/AnyTranslationFile.txt (these files will be auto generated by plugin!)
目前版本 (5.4.0) 是針對 v0.6.1 Open-Beta 建構的。
IL2CPP 的安裝說明與標準版本相同,只是您必須使用此外掛程式的MelonMod-IL2CPP
套件。
需要:IPA 外掛程式管理器(首先按照其安裝說明進行操作!)。
文件結構應該像這樣
{GameDirectory}/Plugins/XUnity.Common.dll
{GameDirectory}/Plugins/XUnity.ResourceRedirector.dll
{GameDirectory}/Plugins/XUnity.AutoTranslator.Plugin.Core.dll
{GameDirectory}/Plugins/XUnity.AutoTranslator.Plugin.IPA.dll
{GameDirectory}/Plugins/XUnity.AutoTranslator.Plugin.ExtProtocol.dll
{GameDirectory}/Plugins/MonoMod.RuntimeDetour.dll
{GameDirectory}/Plugins/MonoMod.Utils.dll
{GameDirectory}/Plugins/Mono.Cecil.dll
{GameDirectory}/Plugins/0Harmony.dll
{GameDirectory}/Plugins/ExIni.dll
{GameDirectory}/Plugins/Translators/{Translator}.dll
{GameDirectory}/Plugins/Translation/AnyTranslationFile.txt (these files will be auto generated by plugin!)
需要:UnityInjector(首先按照其安裝說明進行操作!)。
文件結構應該像這樣
{GameDirectory}/UnityInjector/XUnity.Common.dll
{GameDirectory}/UnityInjector/XUnity.ResourceRedirector.dll
{GameDirectory}/UnityInjector/XUnity.AutoTranslator.Plugin.Core.dll
{GameDirectory}/UnityInjector/XUnity.AutoTranslator.Plugin.UnityInjector.dll
{GameDirectory}/UnityInjector/XUnity.AutoTranslator.Plugin.ExtProtocol.dll
{GameDirectory}/UnityInjector/0Harmony.dll
{GameDirectory}/UnityInjector/Translators/{Translator}.dll
{GameDirectory}/UnityInjector/Config/Translation/AnyTranslationFile.txt (these files will be auto generated by plugin!)
注意:此安裝方法不支援 MonoMod 掛鉤,因為 Sybaris 正在使用過時版本的Mono.Cecil.dll
。
映射以下鍵輸入:
僅調試鍵:
hierarchy.txt
支援的翻譯器有:
3975l6lr5pcbvidl6jl2
100萬字符免費,超出部分按20元/百萬字符收費。注意:如果您使用任何不需要某種形式的身份驗證的線上翻譯器,則該外掛程式可能隨時損壞。
從 3.0.0 開始,您還可以實作自己的翻譯器。為此,請按照此處的說明進行操作。
如果您決定使用經過驗證的服務,請不要共用您的金鑰或秘密。如果您不小心這樣做了,您應該立即撤銷它。大多數(如果不是全部)服務都提供了此選項。
如果您想使用付費選項,請記住在付款之前檢查該外掛程式是否支援您想要翻譯的語言。此外,雖然該插件確實嘗試將發送到翻譯端點的請求量保持在最低限度,但無法保證它將要求端點翻譯多少,並且此存儲庫的作者/所有者不承擔任何責任由於使用此插件,您可能會從您選擇的翻譯提供者收到費用。
這裡概述了插件如何嘗試最大程度地減少其發出的請求數量。
該外掛程式採用以下垃圾郵件預防機制:
支援以下文字框架。
預設設定檔如下所示:
[Service]
Endpoint =GoogleTranslate ; Endpoint to use. See the [translators section](#translators) for valid values.
FallbackEndpoint = ; Endpoint to automatically fallback to if the primary endpoint fails for a specific translation.
[General]
Language =en ; The language to translate into
FromLanguage =ja ; The original language of the game. "auto" is also supported for some endpoints, but it is generally not recommended
[Files]
Directory =Translation{Lang}Text ; Directory to search for cached translation files. Can use placeholder: {GameExeName}, {Lang}
OutputFile =Translation{Lang}Text_AutoGeneratedTranslations.txt ; File to insert generated translations into. Can use placeholders: {GameExeName}, {Lang}
SubstitutionFile =Translation{Lang}Text_Substitutions.txt ; File that contains substitution applied before translations. Can use placeholders: {GameExeName}, {Lang}
PreprocessorsFile =Translation{Lang}Text_Preprocessors.txt ; File that contains preprocessors to be applied before sending a text to a translator. Can use placeholders: {GameExeName}, {Lang}
PostprocessorsFile =Translation{Lang}Text_Postprocessors.txt ; File that contains postprocessors to be applied after receiving a text from a translator. Can use placeholders: {GameExeName}, {Lang}
[TextFrameworks]
EnableUGUI =True ; Enable or disable UGUI translation
EnableNGUI =True ; Enable or disable NGUI translation
EnableTextMeshPro =True ; Enable or disable TextMeshPro translation
EnableTextMesh =False ; Enable or disable TextMesh translation
EnableIMGUI =False ; Enable or disable IMGUI translation
[Behaviour]
MaxCharactersPerTranslation =200 ; Max characters per text to translate. Max 2500.
IgnoreWhitespaceInDialogue =True ; Whether or not to ignore whitespace, including newlines, in dialogue keys
IgnoreWhitespaceInNGUI =True ; Whether or not to ignore whitespace, including newlines, in NGUI
MinDialogueChars =20 ; The length of the text for it to be considered a dialogue
ForceSplitTextAfterCharacters =0 ; Split text into multiple lines once the translated text exceeds this number of characters
CopyToClipboard =False ; Whether or not to copy hooked texts to clipboard
MaxClipboardCopyCharacters =450 ; Max number of characters to hook to clipboard at a time
ClipboardDebounceTime =1.25 ; The number of seconds it takes for hooked text to reach the clipboard. Minimum is 0.1
EnableUIResizing =True ; Whether or not the plugin should provide a "best attempt" at resizing UI components upon translation
EnableBatching =True ; Indicates whether batching of translations should be enabled for supported endpoints
UseStaticTranslations =True ; Indicates whether or not to use translations from the included static translation cache
OverrideFont = ; Overrides the fonts used for texts when updating text components. NOTE: Only works for UGUI
OverrideFontTextMeshPro = ; Consider using FallbackFontTextMeshPro instead. Overrides the fonts used for texts when updating text components. NOTE: Only works for TextMeshPro
FallbackFontTextMeshPro = ; Adds a fallback font for TextMeshPro in case a specific character is not supported. This is recommended over OverrideFontTextMeshPro
ResizeUILineSpacingScale = ; A decimal value that the default line spacing should be scaled by during UI resizing, for example: 0.80. NOTE: Only works for UGUI
ForceUIResizing =True ; Indicates whether the UI resize behavior should be applied to all UI components regardless of them being translated.
IgnoreTextStartingWith =u180e ; ;Indicates that the plugin should ignore any strings starting with certain characters. This is a list seperated by ';'.
TextGetterCompatibilityMode =False ; Indicates whether or not to enable "Text Getter Compatibility Mode". Should only be enabled if required by the game.
GameLogTextPaths = ; Indicates specific paths for game objects that the game uses as "log components", where it continuously appends or prepends text to. Requires expert knowledge to setup. This is a list seperated by ';'.
RomajiPostProcessing =ReplaceMacronWithCircumflex ; RemoveApostrophes;ReplaceHtmlEntities ;Indicates what type of post processing to do on 'translated' romaji texts. This can be important in certain games because the font used does not support various diacritics properly. This is a list seperated by ';'. Possible values: ["RemoveAllDiacritics", "ReplaceMacronWithCircumflex", "RemoveApostrophes", "ReplaceHtmlEntities"]
TranslationPostProcessing =ReplaceMacronWithCircumflex ; ReplaceHtmlEntities ;Indicates what type of post processing to do on translated texts (not romaji). Possible values: ["RemoveAllDiacritics", "ReplaceMacronWithCircumflex", "RemoveApostrophes", "ReplaceWideCharacters", "ReplaceHtmlEntities"]
RegexPostProcessing =None ; Indicates what type of post processing to perform on the capture groups of regexes. Possible values: ["RemoveAllDiacritics", "ReplaceMacronWithCircumflex", "RemoveApostrophes", "ReplaceWideCharacters", "ReplaceHtmlEntities"]
CacheRegexLookups =False ; Indicates whether or not results of regex lookups should be output to the specified OutputFile
CacheWhitespaceDifferences =False ; Indicates whether or not whitespace differences should be output to the specified OutputFile
CacheRegexPatternResults =False ; Indicates whether or not the complete result of regex-splitted translations should be output to the specified OutputFile
GenerateStaticSubstitutionTranslations =False ; Indicates that the plugin should generate translations without variables when using substitutions
GeneratePartialTranslations =False ; Indicates that the plugin should generate partial translations to support text translations as it is "scrolling in"
EnableTranslationScoping =False ; Indicates the plugin should parse 'TARC' directives and scope translations based on these
EnableSilentMode =False ; Indicates the plugin should not print out success messages in relation to translations
BlacklistedIMGUIPlugins = ; If an IMGUI window assembly/class/method name contains any of the strings in this list (case insensitive) that UI will not be translated. Requires MonoMod hooks. This is a list seperated by ';'
OutputUntranslatableText =False ; Indicates if texts that are considered by the plugin to be untranslatable should be output to the specified OutputFile
IgnoreVirtualTextSetterCallingRules =False ; Indicates that rules for virtual method calls should be ignored when trying to set the text of a text component. May in some cases help setting the text of stubborn components
MaxTextParserRecursion =1 ; Indicates how many levels of recursion are allowed when text is parsed so it can be translated in different parts. This can be used with splitter-regexes in advanced scenarios. The default value of one essentially means that recursion is disabled.
HtmlEntityPreprocessing =True ; Will preprocess and decode html entities before they are send for translation. Some translators will fail when html entities are sent.
HandleRichText =True ; Will enable automated handling of rich text (text with markup)
PersistRichTextMode =Final ; Indicates how parsed rich text should be persisted. Either 'Fragment' to store the the text piecemeal or 'Final' to store the entire translated string (does not support substitutions!)
EnableTranslationHelper =False ; Indicates if translator-related helpful log messages should be enabled. May be useful when tranlating based on redirected resources
ForceMonoModHooks =False ; Indicates that the plugin must use MonoMod hooks instead of harmony hooks
InitializeHarmonyDetourBridge =False ; Indicates the plugin should initial harmony detour bridge which allows harmony hooks to work in an environment where System.Reflection.Emit does not exist (usually such settings are handled by plugin managers, so don't use when using a plugin manager)
RedirectedResourceDetectionStrategy =AppendMongolianVowelSeparatorAndRemoveAll ; Indicates if and how the plugin should attempt to recognize redirected resources in order to prevent double translations. Can be ["None", "AppendMongolianVowelSeparator", "AppendMongolianVowelSeparatorAndRemoveAppended", "AppendMongolianVowelSeparatorAndRemoveAll"]
OutputTooLongText =False ; Indicates if the plugin should output text that exceeds 'MaxCharactersPerTranslation' without translating it
[Texture]
TextureDirectory =Translation{Lang}Texture ; Directory to dump textures to, and root of directories to load images from. Can use placeholder: {GameExeName}, {Lang}
EnableTextureTranslation =False ; Indicates whether the plugin will attempt to replace in-game images with those from the TextureDirectory directory
EnableTextureDumping =False ; Indicates whether the plugin will dump texture it is capable of replacing to the TextureDirectory. Has significant performance impact
EnableTextureToggling =False ; Indicates whether or not toggling the translation with the ALT+T hotkey will also affect textures. Not guaranteed to work for all textures. Has significant performance impact
EnableTextureScanOnSceneLoad =False ; Indicates whether or not the plugin should scan for textures on scene load. This enables the plugin to find and (possibly) replace more texture
EnableSpriteRendererHooking =False ; Indicates whether or not the plugin should attempt to hook SpriteRenderer. This is a seperate option because SpriteRenderer can't actually be hooked properly and the implemented workaround could have a theoretical impact on performance in certain situations
LoadUnmodifiedTextures =False ; Indicates whether or not unmodified textures should be loaded. Modifications are determined based on the hash in the file name. Only enable this for debugging purposes as it is likely to cause oddities
TextureHashGenerationStrategy =FromImageName ; Indicates how the mod identifies pictures through hashes. Can be ["FromImageName", "FromImageData", "FromImageNameAndScene"]
DuplicateTextureNames = ; Indicates specific texture names that are duplicated in the game. List is separated by ';'.
DetectDuplicateTextureNames =False ; Indicates if the plugin should detect duplicate texture names.
EnableLegacyTextureLoading =False ; Indicates the plugin should use a different strategy to load images, that may be relevant if the game engine is old
CacheTexturesInMemory =True ; Indicates that all textures loaded should be kept in memory for optimal performance. Disable to decrease memory usage
[ResourceRedirector]
PreferredStoragePath =Translation{Lang}RedirectedResources ; Indicates the preferred storage for redirected resources in relation to the Auto Translator. Can use placeholder: {GameExeName}, {Lang}
EnableTextAssetRedirector =False ; Indicates if TextAssets should be redirected
LogAllLoadedResources =False ; Indicates if the plugin should log to the console all loaded assets. Useful to determine what can be hooked
EnableDumping =False ; Indicates if translatable resources that are found should be dumped
CacheMetadataForAllFiles =True ; When files are in ZIP files in the PreferredStoragePath, these files are indexed in memory to avoid performing file check IO when loading them. Enabling this option will do the same for physical files
[Http]
UserAgent = ; Override the user agent used by APIs requiring a user agent
DisableCertificateValidation =False ; Indiciates whether certificate validations for the .NET API should be disabled
[TranslationAggregator]
Width =400 ; The total width of the translation aggregator window.
Height =100 ; The width (per translator) of the translation aggregator window.
EnabledTranslators = ; The id's of the translation endpoints that has been enabled in the translation aggregator window. List is separated by ';'.
[Google]
ServiceUrl = ; OPTIONAL, can be used to direct google API request to a different URL. Can be used to circumvent GFWoC
[GoogleLegitimate]
GoogleAPIKey = ; OPTIONAL, needed if GoogleTranslateLegitimate is configured
[BingLegitimate]
OcpApimSubscriptionKey = ; OPTIONAL, needed if BingTranslateLegitimate is configured
[Baidu]
BaiduAppId = ; OPTIONAL, needed if BaiduTranslate is configured
BaiduAppSecret = ; OPTIONAL, needed if BaiduTranslate is configured
[Yandex]
YandexAPIKey = ; OPTIONAL, needed if YandexTranslate is configured
[Watson]
Url = ; OPTIONAL, needed if WatsonTranslate is configured
Key = ; OPTIONAL, needed if WatsonTranslate is configured
[DeepL]
MinDelay =2 ; OPTIONAL, used for throttling DeepL
MaxDelay =7 ; OPTIONAL, used for throttling DeepL
[DeepLLegitimate]
ApiKey = ; OPTIONAL, required if DeepLLegitimate is configured
Free =False ; OPTIONAL, required if DeepLLegitimate is configured
[Custom]
Url = ; Optional, needed if CustomTranslated is configured
[LecPowerTranslator15]
InstallationPath = ; Optional, needed if LecPowerTranslator15 is configured
[LingoCloud]
LingoCloudToken = ; Optional, needed if LingoCloudTranslate is configured
[Debug]
EnableConsole =False ; Enables the console. Do not enable if other plugins (managers) handles this
EnableLog =False ; Enables extra logging for debugging purposes
[Migrations]
Enable =True ; Used to enable automatic migrations of this configuration file
Tag =4.15.0 ; Tag representing the last version this plugin was executed under. Do not edit
本節介紹對執行轉換之前和之後的空白處理有影響的配置參數。這些設定都不會影響自動產生的翻譯檔案中放置的「未翻譯文字」。
當涉及到自動翻譯時,正確的空白處理確實可以決定翻譯的成敗。控制空白處理的參數是:
IgnoreWhitespaceInDialogue
IgnoreWhitespaceInNGUI
MinDialogueChars
ForceSplitTextAfterCharacters
該插件首先確定是否應該執行特殊的空白刪除操作。它根據參數IgnoreWhitespaceInDialogue
、 IgnoreWhitespaceInNGUI
和MinDialogueChars
來決定是否執行此操作:
IgnoreWhitespaceInDialogue
:如果文字長於MinDialogueChars
,則刪除空格。IgnoreWhitespaceInNGUI
:如果文字來自 NGUI 元件,則會刪除空格。在配置的服務翻譯文字後,使用ForceSplitTextAfterCharacters
來確定