이는 Unity 기반 게임을 자동으로 번역하는 데 사용할 수 있고 게임을 수동으로 번역하는 데 필요한 도구를 제공하는 고급 번역기 플러그인입니다.
자동 번역을 제공하기 위해 (분명히) 인터넷으로 이동하므로 이것이 불편하다면 사용하지 마세요.
이 플러그인을 게임 번역 제품군의 일부로 재배포하려는 경우 이 섹션과 수동 번역 관련 섹션을 읽어 플러그인 작동 방식을 이해하시기 바랍니다.
모드는 외부 종속성 없이 설치하거나 다음 플러그인 관리자/모드 로더에 대한 플러그인으로 설치할 수 있습니다.
모든 방법에 대한 설치 지침은 아래에서 확인할 수 있습니다.
플러그인은 다음과 같은 방법으로 설치할 수 있습니다.
필수 사항: 없음. 이 다운로드에서는 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!)
참고: Mono.Cecil.dll
의 오래된 버전이 Sybaris와 함께 사용되고 있기 때문에 이 설치 방법에서는 MonoMod 후크가 지원되지 않습니다.
다음 키 입력이 매핑됩니다.
디버깅 전용 키:
hierarchy.txt
파일로 인쇄합니다. 지원되는 번역기는 다음과 같습니다.
3975l6lr5pcbvidl6jl2
이며, 등록하기 전에 사용해 볼 수 있습니다.참고: 어떤 형태로든 인증이 필요하지 않은 온라인 번역기를 사용하는 경우 이 플러그인이 언제든지 중단될 수 있습니다.
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
사용하여 다음을 결정합니다.