/**
 *                                                                            
 * 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.action.ui;

import java.util.ResourceBundle;

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

public class ActionDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
	 
    private static ActionDSLDocumentationTranslator INSTANCE = new ActionDSLDocumentationTranslator();

    public static BasicDSLDocumentationTranslator instance() {
        return INSTANCE;
    }
    
    @Override
    protected ResourceBundle getResourceBundle() {
        return java.util.ResourceBundle.getBundle("i18n.I18N", getLocale(), getClass().getClassLoader());
    }
}
