/**
 *                                                                            
 *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
 *                                                                            
 *  All rights reserved. This program and the accompanying materials           
 *  are made available under the terms of the Eclipse Public License v1.0       
 *  which accompanies this distribution, and is available at                  
 *  http://www.eclipse.org/legal/epl-v10.html                                 
 *                                                                            
 *  Contributors:                                                      
 * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
 * 
 */

package org.eclipse.osbp.xtext.dialogdsl.ui;

import java.util.ResourceBundle;

import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;

// TODO: Auto-generated Javadoc
/**
 * The Class DialogDSLDocumentationTranslator.
 */
public class DialogDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
	 
    /** The instance. */
    private static DialogDSLDocumentationTranslator INSTANCE = new DialogDSLDocumentationTranslator();

    /**
     * Instance.
     *
     * @return the basic dsl documentation translator
     */
    public static BasicDSLDocumentationTranslator instance() {
        return INSTANCE;
    }
    
    /* (non-Javadoc)
     * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator#getResourceBundle()
     */
    @Override
    protected ResourceBundle getResourceBundle() {
        return java.util.ResourceBundle.getBundle("i18n.I18N", getLocale(), getClass().getClassLoader());
    }
}

