Django详细名称&翻译

时间:2016-02-24 06:28:50

标签: django translation

有人可以告诉我在翻译方面是否存在以下方法的问题?

我担心在数据库迁移时,详细名称会被修复。

models.py

import static org.junit.Assert.*;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(JUnitParamsRunner.class)
public class DateFormatTest {

    @Parameters
    private static final Object[] getCorrectDate() {
        return new Object[] {
                new Object[]{"2014-12-13 12:12:12"},
                new Object[]{"2014-12-13 12:12:1"},
                new Object[]{"2014-12-13 12:12:01"},
                new Object[]{"2014-12-13 12:1"},
                new Object[]{"2014-12-13 12:01"},
                new Object[]{"2014-12-13 12"},
                new Object[]{"2014-12-13 1"},
                new Object[]{"2014-12-31 12:12:01"},
                new Object[]{"2014-12-30 23:59:59"},
        };
    }
    @Parameters
    private static final Object[] getWrongDate() {
        return new Object[] {
                new Object[]{"201-12-13 12:12:12"},
                new Object[]{"2014-12- 12:12:12"},
                new Object[]{"2014- 12:12:12"},
                new Object[]{"3014-12-12 12:12:12"},
                new Object[]{"2014-22-12 12:12:12"},
                new Object[]{"2014-12-42 12:12:12"},
                new Object[]{"2014-12-32 12:12:12"},
                new Object[]{"2014-13-31 12:12:12"},
                new Object[]{"2014-12-31 32:12:12"},
                new Object[]{"2014-12-31 24:12:12"},
                new Object[]{"2014-12-31 23:60:12"},
                new Object[]{"2014-12-31 23:59:60"},
                new Object[]{"2014-12-31 23:59:50."},
                new Object[]{"2014-12-31 "},
                new Object[]{"2014-12 23:59:50"},
                new Object[]{"2014 23:59:50"}
        };
    }

    @Test
    @Parameters(method="getCorrectDate")
    public void testMethodHasReturnTrueForCorrectDate(String dateToValidate) {
        assertTrue(DateFormat.validateDateFormatSimple(dateToValidate));
    }

    @Test
    @Parameters(method="getWrongDate")
    public void testMethodHasReturnFalseForWrongDate(String dateToValidate) {
        assertFalse(DateFormat.validateDateFormat(dateToValidate));
    }

}

如果上述问题,是否更好地实施以下内容?

forms.py

from django.utils.translation import gettext as _
class UserClient(models.Model):
    user             = models.OneToOneField(User,related_name='profile_client')
    phone_cell       = PhoneNumberField(verbose_name=_(u'Phone (Cell)'),null=True,blank=False)
    phone_home       = PhoneNumberField(verbose_name_(u'Phone (Home)'),null=True,blank=True)

1 个答案:

答案 0 :(得分:3)

如果您使用latext版本的gettext,那么models.py中的方法将正常工作:

predict(fit, newdata = data.frame(x = x2))
#        1        2 
# 1.060569 1.961109 

事实上,Django自己的模型使用相同的翻译技术 - 看看AbstractUser类。您可以确定这种方法可以正常工作。

即使数据库迁移中存在from django.utils.translation import ugettext_lazy as _ class UserClient(models.Model): phone_cell = PhoneNumberField(verbose_name=_('Phone (Cell)'), ...) ... ,也不会使用它。任何依赖verbose_name的代码都会直接从模型中检索它。例如,ModelForm字段的默认标签将使用模型的verbose_name,并且由于转换是惰性的,实际标签将在评估时进行转换(例如,在模板上呈现)。