/*
*
* Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under
* one or more contributor license agreements (see COPYRIGHT for details).
* The CA licenses this file to you under the GNU Affero General Public
* License version 3, (the "License"); you may not use this file except in
* compliance with the License. This file is part of kune.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package cc.kune.common.shared.i18n;
import cc.kune.common.shared.utils.Pair;
import com.google.gwt.i18n.client.HasDirection.Direction;
// TODO: Auto-generated Javadoc
/**
* The Class I18nTranslationService.
*
* @author vjrj@ourproject.org (Vicente J. Ruiz Jurado)
*/
public abstract class I18nTranslationService implements HasRTL {
/** The Constant RTL. */
protected static final String RTL = "rtl";
// Also in I18nTranslation
/** The Constant UNTRANSLATED_VALUE. */
protected static final String UNTRANSLATED_VALUE = null;
/**
* Decode html.
*
* @param textToDecode
* the text to decode
* @return the string
*/
public String decodeHtml(final String textToDecode) {
final String text = textToDecode;
// text = text.replaceAll("©", "©");
return text;
}
/**
* Gets the direction.
*
* @return the direction
*/
public Direction getDirection() {
return isRTL() ? Direction.RTL : Direction.LTR;
}
public abstract String getSiteCommonName();
/*
* (non-Javadoc)
*
* @see cc.kune.common.shared.i18n.HasRTL#isRTL()
*/
@Override
public abstract boolean isRTL();
/**
* Use [%d] to reference the Integer parameters.
*
* @param pair
* the pair
* @param args
* the args
* @return the string
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
private String t(final Pair<String, String> pair, final Integer... args) {
String translation = tWithNT(pair.getLeft(), pair.getRight());
for (final Integer arg : args) {
translation = translation.replaceFirst("\\[%d\\]", arg.toString());
}
return decodeHtml(translation);
}
/**
* Use [%d] to reference the Long parameter.
*
* @param pair
* the pair
* @param args
* the args
* @return the string
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
private String t(final Pair<String, String> pair, final Long... args) {
String translation = tWithNT(pair.getLeft(), pair.getRight());
for (final Long arg : args) {
translation = translation.replaceFirst("\\[%d\\]", arg.toString());
}
return decodeHtml(translation);
}
/**
* Use [%s] to reference the string parameter.
*
* @param pair
* the pair
* @param args
* the args
* @return the string
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
private String t(final Pair<String, String> pair, final String... args) {
String translation = tWithNT(pair.getLeft(), pair.getRight());
for (final String arg : args) {
translation = translation.replaceFirst("\\[%s\\]", arg);
}
return decodeHtml(translation);
}
/**
* In production, this method uses a hashmap. In development, if the text is
* not in the hashmap, it makes a server petition (that stores the text
* pending for translation in db).
*
* Warning: text is escaped as html before insert in the db. Don't use html
* here (o user this method with params).
*
* @param text
* some note for facilitate the translation
*
* @return text translated in the current language
*/
public String t(final String text) {
return tWithNT(text, "");
}
/**
* Use [%d] to reference the Integer parameters.
*
* @param text
* the text
* @param args
* the args
* @return the string
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
public String t(final String text, final Integer... args) {
return t(Pair.create(text, ""), args);
}
/**
* Use [%d] to reference the Long parameter.
*
* @param text
* the text
* @param args
* the args
* @return the string
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:50
public String t(final String text, final Long... args) {
return t(Pair.create(text, ""), args);
}
/**
* Use [%s] to reference the String parameter.
*
* @param text
* the text
* @param args
* the args
* @return the string
*/
public String t(final String text, final String... args) {
return t(Pair.create(text, ""), args);
}
/**
* In production, this method uses a hashmap. In development, if the text is
* not in the hashmap, it makes a server petition (that stores the text
* pending for translation in db).
*
* Warning: text is escaped as html before insert in the db. Don't use html
* here (o user this method with params).
*
* @param text
* the text
* @param noteForTranslators
* some note for facilitate the translation
* @return text translated in the current language
*/
// @PMD:REVIEWED:ShortMethodName: by vjrj on 21/05/09 13:49
public abstract String tWithNT(final String text, final String noteForTranslators);
/**
* - Use [%d] to reference the Integer parameter.
*
* Also adds [%NT noteForTranslators] at the end of text. This tag is later
* renderer in the translator panel to inform translator how to do this
* translation
*
* @param text
* the text
* @param noteForTranslators
* the note for translators
* @param args
* the args
* @return the string
*/
public String tWithNT(final String text, final String noteForTranslators, final Integer... args) {
return t(Pair.create(text, noteForTranslators), args);
}
/**
* Use [%d] to reference the Long parameter.
*
* Also adds [%NT noteForTranslators] at the end of text. This tag is later
* renderer in the translator panel to inform translator how to do this
* translation
*
* @param text
* the text
* @param noteForTranslators
* the note for translators
* @param args
* the args
* @return the string
*/
public String tWithNT(final String text, final String noteForTranslators, final Long... args) {
return t(Pair.create(text, noteForTranslators), args);
}
/**
* Use [%s] to reference the String parameter.
*
* Also adds [%NT noteForTranslators] at the end of text. This tag is later
* renderer in the translator panel to inform translator how to do this
* translation
*
* @param text
* the text
* @param noteForTranslators
* the note for translators
* @param args
* the args
* @return the string
*/
public String tWithNT(final String text, final String noteForTranslators, final String... args) {
return t(Pair.create(text, noteForTranslators), args);
}
}