Tool Translator++

5.00 star(s) 1 Vote

n0pe

Member
Aug 27, 2018
264
71
something tells me this game hate translated files, when i started a battle this appeared obs.PNG . after leaving the inn to enter the town (inn room after intro) this obs2.PNG . so i dont really know what to do, it was a game that needed to be decrypted(MV). but only with translated data files these errors keep appearing. but i cant find out whats the problem , there are no hints when i look at the tlr++ files
 

osoberanes

Newbie
Jun 17, 2019
54
14
something tells me this game hate translated files, when i started a battle this appeared obs.PNG . after leaving the inn to enter the town (inn room after intro) this obs2.PNG . so i dont really know what to do, it was a game that needed to be decrypted(MV). but only with translated data files these errors keep appearing. but i cant find out whats the problem , there are no hints when i look at the tlr++ files
What I do is rename the file that marks me as an error, go to the folder and make sure it has the same name as the one requesting the error.
 

Chicken_Gooo

New Member
Dec 27, 2017
8
1
After translating the game and exporting the game remains in Japanese, the same can be said for injecting.
Can someone help me?
the game i'm trying to translate is:ラーシェと生贄の村製品版. it's very good game it has a decent story and emotion moments.
 

osoberanes

Newbie
Jun 17, 2019
54
14
After translating the game and exporting the game remains in Japanese, the same can be said for injecting.
Can someone help me?
the game i'm trying to translate is:ラーシェと生贄の村製品版. it's very good game it has a decent story and emotion moments.
did you remember to uncheck all the boxes before injecting?

It often fell to me to leave a few lines untranslated, but not the whole game.
 

n0pe

Member
Aug 27, 2018
264
71
What I do is rename the file that marks me as an error, go to the folder and make sure it has the same name as the one requesting the error.
unfortunatly it isnt that easy when i try to rename it , the picture says / Louise 0.png also there is no png but i think the problem is everytime i try to rename it the / Louise 0 goes automaticlly zu /Louise 0 , it seems like i cannot rename something and starting with space, it cancels it automaticly out. can i do something against this?
 

n0pe

Member
Aug 27, 2018
264
71
did you remember to uncheck all the boxes before injecting?

It often fell to me to leave a few lines untranslated, but not the whole game.
i could solve this with not translating the actors file . but i cant find a solutions abou that match problem
 
Last edited:

H.ERO

Member
Game Developer
Jun 10, 2018
334
221
Help how to fix this???, I try translate 2 KAG Visual Novel Games, this one i try but it didn't even finish "Converting Data" it got Stuck see Picture below, i try waiting 30Minutes still the same it not Processing.help
 

H.ERO

Member
Game Developer
Jun 10, 2018
334
221
I downloaded the game here
 

pk2000

Active Member
Aug 12, 2017
707
1,924
Is there any way to limit line lenght, so anything that goes past it automatically gets on next line?
You don't have permission to view the spoiler content. Log in or register now.
I avoid the "wrap texts" feature. If a game gets an update or bug fix it makes it harder to identify and import the fixes.
Personally I use wrap plugins like:
For VX ace
Code:
#========================================================================
# ** Word Wrapping Message Boxes, by: KilloZapit
#------------------------------------------------------------------------
# Changes message boxes so it will automatically wrap long lines.
#
# Note: I consider this script to be public domain, and put no
# restrictions on it's use whatsoever. My only request is that
# a link back to the script is provided so more people can
# access it if they want to.
#
# Version the Second:
#   Now strips color codes and icon codes so they don't break words.
#   Also calculates icon width along with text width for words.
# Version the Third:
#   Now also strips delays and other timing related codes.
#   Splits for non-icon control codes before counting icons.
#   Control codes can now break lines in case of font changes.
#   Added some comments to clarify some code.
# Version the Forth:
#   Fixed a small bug that might cause a error when counting icons.
#   Added a small notice for copyright questions.
# Version the Fifth:
#   Added "collapse" mode, which elimanates extra spaces.
#   Can now use "whitespace" mode outside of wordwrap mode if needed.
# Version the Sixth:
#   Fixed problems with collapsed whitespace not wraping words right.
# Version the Seventh:
#   Added option to add a margin to the right hand side of the window.
#------------------------------------------------------------------------
# Also adds the following new escape sequences:
#
# \ww  - Word Wrap: turns word wrap on if it's off
# \nw  - No Wrap: Turns word wrap off
# \ws  - WhiteSpace mode: Converts newlines to spaces (like HTML)
# \nl  - New Line: Preserves hard returns
# \cs  - Collapse whiteSpace: Eliminates extra spaces (also like HTML)
# \pre - PRE-formatted: Preserves spaces
# \br  - line BRake: manual newline for whitespace mode
# \rm  - Right Margin: extra space on the right side of the window
#========================================================================

# Standard config module.
module KZIsAwesome
  module WordWrap

    # change this if you don't want wordwrap on by default.
    DEFAULT_WORDWRAP = true

    # change this if you want white space mode on by default.
    DEFAULT_WHITESPACE = false

    # change this if you want white space mode on by default.
    DEFAULT_COLLAPSE = true

    # change this to add a right margin to the window.
    DEFAULT_RIGHT_MARGIN = 0

  end
end

class Window_Base < Window
  include KZIsAwesome::WordWrap

  alias_method :initialize_kz_window_base, :initialize
  def initialize(x, y, width, height)
    initialize_kz_window_base(x, y, width, height)
    @wordwrap = DEFAULT_WORDWRAP
    @convert_newlines = DEFAULT_WHITESPACE
    @collapse_whitespace = DEFAULT_COLLAPSE
    @right_margin = DEFAULT_RIGHT_MARGIN
    @lastc = "\n"
  end

  alias_method :process_character_kz_window_base, :process_character
  def process_character(c, text, pos)
    c = ' ' if @convert_newlines && c == "\n"
    if @wordwrap && c =~ /[ \t]/
      c = '' if @collapse_whitespace && @lastc =~ /[\s\n\f]/
      if pos[:x] + get_next_word_size(c, text) > contents.width - @right_margin
        process_new_line(text, pos)
      else
        process_normal_character(c, pos)
      end
      @lastc = c
    else
      @lastc = c
      process_character_kz_window_base(c, text, pos)
    end
  end

  def get_next_word_size(c, text)
    # Split text by the next space/line/page and grab the first split
    nextword = text.split(/[\s\n\f]/, 2)[0]
    if nextword
      icons = 0
      if nextword =~ /\e/i
        # Get rid of color codes and YEA Message system outline colors
        nextword = nextword.split(/\e[oOcC]+\[\d*\]/).join
        # Get rid of message timing control codes
        nextword = nextword.split(/\e[\.\|\^<>!]/).join
        # Split text by the first non-icon escape code
        # (the hH is for compatibility with the Icon Hues script)
        nextword = nextword.split(/\e[^iIhH]+/, 2)[0]
        # Erase and count icons in remaining text
        nextword.gsub!(/\e[iIhH]+\[[\d,]*\]/) do
          icons += 1
          ''
        end if nextword
      end
      wordsize = (nextword ? text_size(c + nextword).width : text_size( c ).width)
      wordsize += icons * 24
    else
      wordsize = text_size( c ).width
    end
    return wordsize
  end

  alias_method :process_escape_character_kz_window_base, :process_escape_character
  def process_escape_character(code, text, pos)
    case code.upcase
    when 'WW'
      @wordwrap = true
    when 'NW'
      @wordwrap = false
    when 'WS'
      @convert_newlines = true
    when 'NL'
      @convert_newlines = false
    when 'CS'
      @collapse_whitespace = true
    when 'PRE'
      @collapse_whitespace = false
    when 'BR'
      process_new_line(text, pos)
      @lastc = "\n"
    when 'RM'
      @right_margin = obtain_escape_param(text)
    else
      process_escape_character_kz_window_base(code, text, pos)
    end
    # Recalculate the next word size and insert line breaks
    # (Needed primarily for font changes)
    if pos[:x] + get_next_word_size('', text) > contents.width
      process_new_line(text, pos)
    end
  end

end
and for MV
Code:
//=============================================================================
// VividXP_WordWrap.js
//=============================================================================

/*:
 * @plugindesc "Show Text" Word Wrapping
 * @author Lene
 *
 * @help Using this plugin is easy! Just enter your dialog in the message window
 * and watch is wrap around. May not work for all languages.
 * This plugin does not provide plugin commands.
 *
 * @param Word Wrap Style
 * @desc break-all to wrap at any character, break-word to wrap at word start. Default: break-word
 * @default break-word
 */

 var VividXP = VividXP || {};
 VividXP.WordWrap = {};
 VividXP.WordWrap.Parameters = PluginManager.parameters('VividXP_WordWrap');
 VividXP.WordWrap.WordWrapStyle = String(
     VividXP.WordWrap.Parameters['Word Wrap Style']
 );

(function() {

    var _Window_Base_processNormalCharacter = Window_Base.prototype.processNormalCharacter;
    var _Window_Base_processDrawIcon = Window_Base.prototype.processDrawIcon;
    var _Window_Message_initMembers = Window_Message.prototype.initMembers;
    var _Window_Base_processNewLine  = Window_Base.prototype.processNewLine;

    Window_Message.prototype.initMembers = function() {
        this._processWordWrapBreak = false;
        _Window_Message_initMembers.call(this);
    };

    Window_Message.prototype.updateMessage = function() {
        if (this._textState && !this._processWordWrapBreak) {
            while (!this.isEndOfText(this._textState)) {
                if (this.needsNewPage(this._textState)) {
                    this.newPage(this._textState);
                }
                this.updateShowFast();
                this.processCharacter(this._textState);
                if (!this._showFast && !this._lineShowFast) {
                    break;
                }
                if (this.pause || this._waitCount > 0) {
                    break;
                }
            }
            if (this.isEndOfText(this._textState)) {
                this.onEndOfText();
            }
            return true;
        } else {
            return false;
        }
    };


    /***
     * getWordBoundaries
     * Takes the current message and does regex processing to retrieve the index
     * of the beginning of all words. Since this is javascript, unfortunately
     * the unicode support is lacking. But it should work with english
     * characters and some accented characters as well.
     * textStateText = the full message
     * returns array of indices representing the start of each word in the
     * full message
     */
    Window_Message.prototype.getWordBoundaries = function(textStateText) {
        var result = [];
        var wordRegex = /\b[\S]+\b\S*/gm;
        var wordBoundaryArr = [];
        while ((wordBoundaryArr = wordRegex.exec(textStateText)) !== null) {
            result.push(wordBoundaryArr);
        }
        result = result.map(function(match) {
            return match.index;
        });
        return result;
    };

    /***
     * startMessage
     * Overwrites Window_Message.prototype.startMessage to call getWordBoundaries
     * after escaping the text and before displaying the message
     */
    Window_Message.prototype.startMessage = function() {
        if ( this._processWordWrapBreak === false ){
            this._textState = {};
            this._textState.index = 0;
            this._textState.text = this.convertEscapeCharacters($gameMessage.allText());
            this._textState.wordBoundaries = this.getWordBoundaries(this._textState.text);
        }

        this.newPage(this._textState);
        this._processWordWrapBreak = false;
        this.updatePlacement();
        this.updateBackground();
        this.open();
    };

    Window_Message.prototype.newPage = function(textState) {
        this.contents.clear();
        if (!this._processWordWrapBreak) {
            this.resetFontSettings();
        }
        this.clearFlags();
        this.loadMessageFace();
        textState.x = this.newLineX();
        textState.y = 0;
        textState.left = this.newLineX();
        textState.height = this.calcTextHeight(textState, false);
    };

    /***
     * processNormalCharacter
     * Check if word wrapping needs to take place
     * textState - contains information related to the message
     */
    Window_Message.prototype.processNormalCharacter = function(textState) {    
        this.processOverflow(textState);
        if (!this.needsNewPage(textState)){
            _Window_Base_processNormalCharacter.call(this, textState);
        }
    };

    /***
     * processDrawIcon
     * Check if word wrapping for icons needs to take place. Since icons are 
     * images we don't need to check the WordWrapStyle setting, we just move 
     * the icon to the next line if it doesn't fit
     * iconIndex - index corresponding to icon to be displayed
     * textState - contains information related to the message
     */
    Window_Message.prototype.processDrawIcon = function(iconIndex, textState) {
        var maxWindowWidth = this.contents.width;
        var iconWidth = Window_Base._iconWidth + 4;
        if ( textState.x >= maxWindowWidth || textState.x + iconWidth >= maxWindowWidth  ) {
            this.wrapToNewLine(textState);
        }
        _Window_Base_processDrawIcon.call(this, iconIndex, textState);
    };

    /***
     * processNewLine
     * Overrides Window_Base.prototype.processNewLine 
     * We have to make sure to check if a new line has pushed content off the page,
     * in the case of a message that has a mixture of manual line breaks and 
     * word wrap.
     * textState - contains information related to the message
     */
    Window_Base.prototype.processNewLine = function(textState) {
        _Window_Base_processNewLine.call(this, textState);
        if (typeof this.needsNewPage === 'function' && this.needsNewPage(textState)) {
           this._processWordWrapBreak = true;
       }
    };

    /***
     * processOverflow
     * Used only for processing normal characters. Check if word wrapping needs
     * to occur and does it. Depending on WordWrapStyle setting, we either wrap
     * the whole word to a new line, or the current character to a new line
     * textState - contains information related to the message
     */
    Window_Message.prototype.processOverflow = function(textState) {
        var maxWindowWidth = this.contents.width;
        var w;
        switch (VividXP.WordWrap.WordWrapStyle) {
            case 'break-word':
                var lastBoundaryIndex = textState.wordBoundaries[textState.wordBoundaries.length - 1];
                var boundaryStartIndex = textState.wordBoundaries.lastIndexOf(textState.index);
                if (boundaryStartIndex !== -1) {
                    var boundaryEndIndex;
                    if ( textState.wordBoundaries[boundaryStartIndex] === lastBoundaryIndex ){
                        boundaryEndIndex = textState.text.length - 1;
                    } else {
                        boundaryEndIndex = textState.wordBoundaries[boundaryStartIndex + 1] - 1;
                    }
                    boundaryStartIndex = textState.wordBoundaries[boundaryStartIndex];
                    var word = textState.text.substring(boundaryStartIndex, boundaryEndIndex);
                    w = this.textWidth(word);
                    if ( textState.x >= maxWindowWidth || textState.x + w >= maxWindowWidth ){
                        this.wrapToNewLine(textState);
                    }
                }

                break;
            case 'break-all':
            default:
                var c = textState.text[textState.index];
                w = this.textWidth(c);
                if ( textState.x >= maxWindowWidth || textState.x + (w * 2) >= maxWindowWidth ){
                    this.wrapToNewLine(textState);
                }
                break;
        }
    };

    /***
     * wrapToNewLine
     * Wraps content to new line. If doing so pushes the rest of the message off
     * current page, then we pause and wait for user input to continue displaying
     * the message
     * textState - contains information related to the message
     */
    Window_Message.prototype.wrapToNewLine = function(textState) {
        this._lineShowFast = false;
        textState.x = this.newLineX();
        textState.y += textState.height;
        textState.height = this.calcTextHeight(textState, false);
         if (this.needsNewPage(textState)) {
            this._processWordWrapBreak = true;
            this.startPause();
        }
    };

})();
 
5.00 star(s) 1 Vote