Hi Isomorphic,
please take a look at this test case.
For datasource "animals", LocaleMessageProvider is never called.
For datasource "employees" works as expected.
(SNAPSHOT_v12.1d_2018-11-12/PowerEdition Deployment (built 2018-11-12))
	
	animals.ds.xml
	employees.ds.xml
	BuiltInDS.java
	Best regards
Pavo
							
						
					please take a look at this test case.
For datasource "animals", LocaleMessageProvider is never called.
For datasource "employees" works as expected.
(SNAPSHOT_v12.1d_2018-11-12/PowerEdition Deployment (built 2018-11-12))
Code:
	
	    <servlet>
        <servlet-name>RegisterDS</servlet-name>
        <servlet-class>com.smartgwt.sample.server.listener.RegisterDS</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
Code:
	
	package com.smartgwt.sample.server.listener;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import com.isomorphic.datasource.DSRequest;
import com.isomorphic.datasource.DataSource;
import com.isomorphic.datasource.DynamicDSGenerator;
import com.isomorphic.util.LocaleMessageProvider;
import com.isomorphic.util.LocaleMessageProviderRegistry;
import com.isomorphic.util.LocaleMessageSourceEnum;
public class RegisterDS extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    public void init() throws ServletException {
        final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DynamicDSGenerator datasourceGenerator = new DynamicDSGenerator() {
            @Override
            public DataSource getDataSource(String id, DSRequest arg1) {
                try {
                    if (id.startsWith("animals")) {
                        ServletContext servletContext = getServletContext();
                        String strAbsolutePath = servletContext.getRealPath("ds");
                        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                        Document doc = documentBuilder.parse(strAbsolutePath + "\\" + id + ".ds.xml");
                        return DataSource.fromXML(doc);
                    } else if (id.startsWith("employees")) {
                        return null;
                    }
                } catch (Exception e) {
                }
                return null;
            }
        };
        LocaleMessageProvider localeMessageProvider = new LocaleMessageProvider() {
            @Override
            public String getMessage(String arg0, Locale arg1, String arg2, String arg3, LocaleMessageSourceEnum arg4, String arg5) {
                String id = arg0;
                try {
                    return id + "translation";
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return "";
            }
        };
        LocaleMessageProviderRegistry.addDSLocaleMessageProvider(localeMessageProvider);
        DataSource.addDynamicDSGenerator(datasourceGenerator);
    }
}
Code:
	
	        <field name="information"     title="Interesting Facts"  type="text"  length="1000">
            <title><fmt:message key="title"/></title>
        </field>
Code:
	
	        <field name="EmployeeStatus"  title="Status"          type="text"     length="40">
            <title><fmt:message key="title"/></title>
        </field>
Code:
	
	            ListGrid lg1 = new ListGrid() {
                {
                    setDataSource("animals");
                    ListGridField informationLGF = new ListGridField("information");
                    setFields(informationLGF);
                    fetchData();
                }
            };
            ListGrid lg2 = new ListGrid() {
                {
                    setDataSource("employees");
                    ListGridField employeeStatusLGF = new ListGridField("EmployeeStatus");
                    setFields(employeeStatusLGF);
                    fetchData();
                }
            };
            addItem(lg1);
            addItem(lg2);
Pavo
Comment