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

import java.util.ResourceBundle;

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

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