diff --git a/src/Math/Matrix.h b/src/Math/Matrix.h index b1e7313f0..77ae1f754 100644 --- a/src/Math/Matrix.h +++ b/src/Math/Matrix.h @@ -193,7 +193,9 @@ information. @note Not available on GCC < 4.7. Use %Matrix<2, T> instead. @see @ref Magnum::Matrix2x2, @ref Magnum::Matrix2x2d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix2x2 = Matrix<2, T>; +#endif /** @brief 3x3 matrix @@ -204,7 +206,9 @@ additional functions for transformations in 2D. @note Not available on GCC < 4.7. Use %Matrix<3, T> instead. @see @ref Magnum::Matrix3x3, @ref Magnum::Matrix3x3d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix3x3 = Matrix<3, T>; +#endif /** @brief 4x4 matrix @@ -215,8 +219,10 @@ additional functions for transformations in 3D. @note Not available on GCC < 4.7. Use %Matrix<3, T> instead. @see @ref Magnum::Matrix4x4, @ref Magnum::Matrix4x4d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix4x4 = Matrix<4, T>; #endif +#endif MAGNUM_MATRIX_OPERATOR_IMPLEMENTATION(Matrix) diff --git a/src/Math/Range.h b/src/Math/Range.h index e914f02ec..7b44fd3d4 100644 --- a/src/Math/Range.h +++ b/src/Math/Range.h @@ -192,8 +192,10 @@ Convenience alternative to %Range<1, T>. See @ref Range for more information. @note Not available on GCC < 4.7. Use %Range<1, T> instead. */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Range1D = Range<1, T>; #endif +#endif /** @brief Two-dimensional range diff --git a/src/Math/RectangularMatrix.h b/src/Math/RectangularMatrix.h index fced33688..19a09c8a3 100644 --- a/src/Math/RectangularMatrix.h +++ b/src/Math/RectangularMatrix.h @@ -417,7 +417,9 @@ Convenience alternative to %RectangularMatrix<2, 3, T>. See instead. @see @ref Magnum::Matrix2x3, @ref Magnum::Matrix2x3d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix2x3 = RectangularMatrix<2, 3, T>; +#endif /** @brief Matrix with 3 columns and 2 rows @@ -428,7 +430,9 @@ Convenience alternative to %RectangularMatrix<3, 2, T>. See instead. @see @ref Magnum::Matrix3x2, @ref Magnum::Matrix3x2d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix3x2 = RectangularMatrix<3, 2, T>; +#endif /** @brief Matrix with 2 columns and 4 rows @@ -439,7 +443,9 @@ Convenience alternative to %RectangularMatrix<2, 4, T>. See instead. @see @ref Magnum::Matrix2x4, @ref Magnum::Matrix2x4d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix2x4 = RectangularMatrix<2, 4, T>; +#endif /** @brief Matrix with 4 columns and 2 rows @@ -450,7 +456,9 @@ Convenience alternative to %RectangularMatrix<4, 2, T>. See instead. @see @ref Magnum::Matrix4x2, @ref Magnum::Matrix4x2d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix4x2 = RectangularMatrix<4, 2, T>; +#endif /** @brief Matrix with 3 columns and 4 rows @@ -461,7 +469,9 @@ Convenience alternative to %RectangularMatrix<3, 4, T>. See instead. @see @ref Magnum::Matrix3x4, @ref Magnum::Matrix3x4d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix3x4 = RectangularMatrix<3, 4, T>; +#endif /** @brief Matrix with 4 columns and 3 rows @@ -472,8 +482,10 @@ Convenience alternative to %RectangularMatrix<4, 3, T>. See instead. @see @ref Magnum::Matrix4x3, @ref Magnum::Matrix4x3d */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using Matrix4x3 = RectangularMatrix<4, 3, T>; #endif +#endif /** @relates RectangularMatrix @brief Multiply number with matrix diff --git a/src/SceneGraph/AbstractCamera.h b/src/SceneGraph/AbstractCamera.h index 3a03d8603..304bf95b8 100644 --- a/src/SceneGraph/AbstractCamera.h +++ b/src/SceneGraph/AbstractCamera.h @@ -172,8 +172,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractCamera<2, T> instead. @see @ref AbstractCamera2D, @ref AbstractBasicCamera3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicCamera2D = AbstractCamera<2, T>; #endif +#endif /** @brief Base camera for two-dimensional float scenes @@ -181,7 +183,9 @@ template using AbstractBasicCamera2D = AbstractCamera<2, T>; @see @ref AbstractCamera3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef AbstractBasicCamera2D AbstractCamera2D; +#endif #else typedef AbstractCamera<2, Float> AbstractCamera2D; #endif @@ -195,8 +199,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractCamera<3, T> instead. @see @ref AbstractCamera3D, @ref AbstractBasicCamera2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicCamera3D = AbstractCamera<3, T>; #endif +#endif /** @brief Base camera for three-dimensional float scenes diff --git a/src/SceneGraph/AbstractFeature.h b/src/SceneGraph/AbstractFeature.h index 695cedad6..f4c7895e7 100644 --- a/src/SceneGraph/AbstractFeature.h +++ b/src/SceneGraph/AbstractFeature.h @@ -304,8 +304,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractFeature<2, T> instead. @see @ref AbstractFeature2D, @ref AbstractBasicFeature3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicFeature2D = AbstractFeature<2, T>; #endif +#endif /** @brief Base feature for two-dimensional float scenes @@ -313,7 +315,9 @@ template using AbstractBasicFeature2D = AbstractFeature<2, T>; @see @ref AbstractFeature3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef AbstractBasicFeature2D AbstractFeature2D; +#endif #else typedef AbstractFeature<2, Float> AbstractFeature2D; #endif @@ -327,8 +331,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractFeature<3, T> instead. @see AbstractFeature2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicFeature3D = AbstractFeature<3, T>; #endif +#endif /** @brief Base feature for three-dimensional float scenes @@ -336,7 +342,9 @@ template using AbstractBasicFeature3D = AbstractFeature<3, T>; @see @ref AbstractFeature2D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef AbstractBasicFeature3D AbstractFeature3D; +#endif #else typedef AbstractFeature<3, Float> AbstractFeature3D; #endif diff --git a/src/SceneGraph/AbstractGroupedFeature.h b/src/SceneGraph/AbstractGroupedFeature.h index 9f9126940..4bd2239ad 100644 --- a/src/SceneGraph/AbstractGroupedFeature.h +++ b/src/SceneGraph/AbstractGroupedFeature.h @@ -116,7 +116,9 @@ AbstractGroupedFeature for more information. instead. @see @ref AbstractGroupedFeature2D, @ref AbstractBasicGroupedFeature3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicGroupedFeature2D = AbstractGroupedFeature<2, Derived, T>; +#endif /** @brief Base grouped feature for two-dimensional float scenes @@ -127,7 +129,9 @@ See AbstractGroupedFeature for more information. instead. @see @ref AbstractGroupedFeature3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractGroupedFeature2D = AbstractBasicGroupedFeature2D; +#endif /** @brief Base grouped feature for three-dimensional scenes @@ -138,7 +142,9 @@ AbstractGroupedFeature for more information. instead. @see @ref AbstractGroupedFeature3D, @ref AbstractBasicGroupedFeature2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicGroupedFeature3D = AbstractGroupedFeature<3, Derived, T>; +#endif /** @brief Base grouped feature for three-dimensional float scenes @@ -149,8 +155,10 @@ See AbstractGroupedFeature for more information. instead. @see @ref AbstractGroupedFeature2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractGroupedFeature3D = AbstractBasicGroupedFeature3D; #endif +#endif }} diff --git a/src/SceneGraph/AbstractObject.h b/src/SceneGraph/AbstractObject.h index c2b1e15fa..b3bfefa78 100644 --- a/src/SceneGraph/AbstractObject.h +++ b/src/SceneGraph/AbstractObject.h @@ -240,8 +240,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractObject<2, T> instead. @see @ref AbstractObject2D, @ref AbstractBasicObject3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicObject2D = AbstractObject<2, T>; #endif +#endif /** @brief Base object for two-dimensional float scenes @@ -249,7 +251,9 @@ template using AbstractBasicObject2D = AbstractObject<2, T>; @see @ref AbstractObject3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef AbstractBasicObject2D AbstractObject2D; +#endif #else typedef AbstractObject<2, Float> AbstractObject2D; #endif @@ -263,8 +267,10 @@ for more information. @note Not available on GCC < 4.7. Use %AbstractObject<3, T> instead. @see AbstractObject2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicObject3D = AbstractObject<3, T>; #endif +#endif /** @brief Base object for three-dimensional float scenes @@ -272,7 +278,9 @@ template using AbstractBasicObject3D = AbstractObject<3, T>; @see @ref AbstractObject2D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef AbstractBasicObject3D AbstractObject3D; +#endif #else typedef AbstractObject<3, Float> AbstractObject3D; #endif diff --git a/src/SceneGraph/AbstractTransformation.h b/src/SceneGraph/AbstractTransformation.h index 462f9429c..e5ffb822a 100644 --- a/src/SceneGraph/AbstractTransformation.h +++ b/src/SceneGraph/AbstractTransformation.h @@ -108,8 +108,10 @@ AbstractTransformation for more information. instead. @see @ref AbstractTransformation2D, @ref AbstractBasicTransformation3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicTransformation2D = AbstractTransformation<2, T>; #endif +#endif /** @brief Base transformation for two-dimensional float scenes @@ -132,8 +134,10 @@ AbstractTransformation for more information. instead. @see @ref AbstractTransformation3D, @ref AbstractBasicTransformation2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using AbstractBasicTransformation3D = AbstractTransformation<3, T>; #endif +#endif /** @brief Base transformation for three-dimensional float scenes diff --git a/src/SceneGraph/AbstractTranslation.h b/src/SceneGraph/AbstractTranslation.h index a2ecf6e47..88e6be3b5 100644 --- a/src/SceneGraph/AbstractTranslation.h +++ b/src/SceneGraph/AbstractTranslation.h @@ -93,6 +93,7 @@ See @ref AbstractTranslation for more information. instead. @see @ref AbstractTranslation2D, @ref AbstractBasicTranslation3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ #ifdef DOXYGEN_GENERATING_OUTPUT template #else @@ -100,6 +101,7 @@ template #endif using AbstractBasicTranslation2D = AbstractTranslation<2, T, TranslationType>; #endif +#endif /** @brief Base transformation for two-dimensional float scenes supporting translation @@ -122,6 +124,7 @@ See @ref AbstractTranslation for more information. instead. @see @ref AbstractTranslation3D, @ref AbstractBasicTranslation2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ #ifdef DOXYGEN_GENERATING_OUTPUT template #else @@ -129,6 +132,7 @@ template #endif using AbstractBasicTranslation3D = AbstractTranslation<3, T, TranslationType>; #endif +#endif /** @brief Base transformation for three-dimensional float scenes supporting translation diff --git a/src/SceneGraph/Animable.h b/src/SceneGraph/Animable.h index 2f8df0020..5031edaa9 100644 --- a/src/SceneGraph/Animable.h +++ b/src/SceneGraph/Animable.h @@ -343,8 +343,10 @@ information. @note Not available on GCC < 4.7. Use %Animable<2, T> instead. @see @ref Animable2D, @ref BasicAnimable3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicAnimable2D = Animable<2, T>; #endif +#endif /** @brief %Animable for two-dimensional float scenes @@ -352,7 +354,9 @@ template using BasicAnimable2D = Animable<2, T>; @see @ref Animable3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef BasicAnimable2D Animable2D; +#endif #else typedef Animable<2, Float> Animable2D; #endif @@ -366,8 +370,10 @@ information. @note Not available on GCC < 4.7. Use %Animable<3, T> instead. @see @ref Animable3D, @ref BasicAnimable2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicAnimable3D = Animable<3, T>; #endif +#endif /** @brief %Animable for three-dimensional float scenes @@ -375,7 +381,9 @@ template using BasicAnimable3D = Animable<3, T>; @see @ref Animable2D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef BasicAnimable3D Animable3D; +#endif #else typedef Animable<3, Float> Animable3D; #endif diff --git a/src/SceneGraph/AnimableGroup.h b/src/SceneGraph/AnimableGroup.h index 39af7a1e6..8d62cdda7 100644 --- a/src/SceneGraph/AnimableGroup.h +++ b/src/SceneGraph/AnimableGroup.h @@ -81,8 +81,10 @@ more information. @note Not available on GCC < 4.7. Use %AnimableGroup<2, T> instead. @see @ref AnimableGroup2D, @ref BasicAnimableGroup3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicAnimableGroup2D = AnimableGroup<2, T>; #endif +#endif /** @brief %Animable group for two-dimensional float scenes @@ -90,7 +92,9 @@ template using BasicAnimableGroup2D = AnimableGroup<2, T>; @see @ref AnimableGroup3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef BasicAnimableGroup2D AnimableGroup2D; +#endif #else typedef AnimableGroup<2, Float> AnimableGroup2D; #endif @@ -104,8 +108,10 @@ more information. @note Not available on GCC < 4.7. Use %AnimableGroup<3, T> instead. @see @ref AnimableGroup3D, @ref BasicAnimableGroup2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicAnimableGroup3D = AnimableGroup<3, T>; #endif +#endif /** @brief %Animable group for three-dimensional float scenes @@ -113,7 +119,9 @@ template using BasicAnimableGroup3D = AnimableGroup<3, T>; @see @ref AnimableGroup2D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ typedef BasicAnimableGroup3D AnimableGroup3D; +#endif #else typedef AnimableGroup<3, Float> AnimableGroup3D; #endif diff --git a/src/SceneGraph/Drawable.h b/src/SceneGraph/Drawable.h index 305251c8d..ee1fbfe9d 100644 --- a/src/SceneGraph/Drawable.h +++ b/src/SceneGraph/Drawable.h @@ -163,8 +163,10 @@ information. @note Not available on GCC < 4.7. Use %Drawable<2, T> instead. @see @ref Drawable2D, @ref BasicDrawable3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicDrawable2D = Drawable<2, T>; #endif +#endif /** @brief %Drawable for two-dimensional float scenes @@ -186,8 +188,10 @@ information. @note Not available on GCC < 4.7. Use %Drawable<3, T> instead. @see @ref Drawable3D, @ref BasicDrawable3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicDrawable3D = Drawable<3, T>; #endif +#endif /** @brief %Drawable for three-dimensional float scenes @@ -208,7 +212,9 @@ See @ref Drawable for more information. @ref DrawableGroup2D, @ref DrawableGroup3D */ #ifndef CORRADE_GCC46_COMPATIBILITY +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using DrawableGroup = FeatureGroup, T>; +#endif #else template class DrawableGroup: public FeatureGroup, T> {}; #endif @@ -222,8 +228,10 @@ more information. @note Not available on GCC < 4.7. Use %Drawable<2, T> instead. @see @ref DrawableGroup2D, @ref BasicDrawableGroup3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicDrawableGroup2D = DrawableGroup<2, T>; #endif +#endif /** @brief Group of drawables for two-dimensional float scenes @@ -245,8 +253,10 @@ more information. @note Not available on GCC < 4.7. Use %Drawable<3, T> instead. @see @ref DrawableGroup3D, @ref BasicDrawableGroup2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicDrawableGroup3D = DrawableGroup<3, T>; #endif +#endif /** @brief Group of drawables for three-dimensional float scenes diff --git a/src/SceneGraph/FeatureGroup.h b/src/SceneGraph/FeatureGroup.h index 6bb7e6a85..0cd2168a0 100644 --- a/src/SceneGraph/FeatureGroup.h +++ b/src/SceneGraph/FeatureGroup.h @@ -124,7 +124,9 @@ AbstractGroupedFeature for more information. instead. @see @ref FeatureGroup2D, @ref BasicFeatureGroup3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicFeatureGroup2D = FeatureGroup<2, Feature, T>; +#endif /** @brief Base feature group for two-dimensional float scenes @@ -135,7 +137,9 @@ AbstractGroupedFeature for more information. instead. @see @ref FeatureGroup3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using FeatureGroup2D = BasicFeatureGroup2D; +#endif /** @brief Base feature group for three-dimensional scenes @@ -146,7 +150,9 @@ AbstractGroupedFeature for more information. instead. @see @ref FeatureGroup3D, @ref BasicFeatureGroup2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using BasicFeatureGroup3D = FeatureGroup<3, Feature, T>; +#endif /** @brief Base feature group for three-dimensional float scenes @@ -157,8 +163,10 @@ AbstractGroupedFeature for more information. instead. @see @ref FeatureGroup2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ template using FeatureGroup3D = BasicFeatureGroup3D; #endif +#endif template FeatureGroup::~FeatureGroup() { for(auto it = this->features.begin(); it != this->features.end(); ++it) diff --git a/src/SceneGraph/TranslationTransformation.h b/src/SceneGraph/TranslationTransformation.h index 29bbc169f..104a0c0d6 100644 --- a/src/SceneGraph/TranslationTransformation.h +++ b/src/SceneGraph/TranslationTransformation.h @@ -136,6 +136,7 @@ See @ref TranslationTransformation for more information. instead. @see @ref TranslationTransformation2D, @ref BasicTranslationTransformation3D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ #ifdef DOXYGEN_GENERATING_OUTPUT template #else @@ -143,6 +144,7 @@ template #endif using BasicTranslationTransformation2D = TranslationTransformation<2, T, TranslationType>; #endif +#endif /** @brief Base transformation for two-dimensional float scenes supporting translation @@ -165,6 +167,7 @@ See @ref TranslationTransformation for more information. instead. @see @ref TranslationTransformation3D, @ref BasicTranslationTransformation2D */ +#ifndef CORRADE_MSVC2013_COMPATIBILITY /* Apparently cannot have multiply defined aliases */ #ifdef DOXYGEN_GENERATING_OUTPUT template #else @@ -172,6 +175,7 @@ template #endif using BasicTranslationTransformation3D = TranslationTransformation<3, T, TranslationType>; #endif +#endif /** @brief Base transformation for three-dimensional float scenes supporting translation