← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 5232: Data entry form - FIxed i18n.

 

------------------------------------------------------------
revno: 5232
committer: Hieu <hieu.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2011-11-29 14:16:17 +0700
message:
  Data entry form - FIxed i18n.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryFormService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataentryform/DataEntryFormServiceTest.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/LoadFormAction.java
  dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties
  dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryFormService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryFormService.java	2011-08-13 13:55:24 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataentryform/DataEntryFormService.java	2011-11-29 07:16:17 +0000
@@ -118,9 +118,10 @@
      * name as value and title for each entry field.
      * 
      * @param htmlCode the HTML code of the data entry form.
+     * @param i18n the i18n object.
      * @return HTML code for the data entry form.
      */
-    String prepareDataEntryFormForEdit( String htmlCode );
+    String prepareDataEntryFormForEdit( String htmlCode, I18n i18n );
     
     /**
      * Prepares the data entry form for data entry by injecting required javascripts

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java	2011-09-28 13:07:48 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataentryform/DefaultDataEntryFormService.java	2011-11-29 07:16:17 +0000
@@ -54,12 +54,12 @@
 @Transactional
 public class DefaultDataEntryFormService
     implements DataEntryFormService
-{    
+{
     private static final String EMPTY_VALUE_TAG = "value=\"\"";
     private static final String EMPTY_TITLE_TAG = "title=\"\"";
     private static final String TAG_CLOSE = "/>";
     private static final String EMPTY = "";
-    
+
     // ------------------------------------------------------------------------
     // Dependencies
     // ------------------------------------------------------------------------
@@ -84,7 +84,7 @@
     {
         this.dataElementService = dataElementService;
     }
-    
+
     private IndicatorService indicatorService;
 
     public void setIndicatorService( IndicatorService indicatorService )
@@ -125,7 +125,7 @@
     {
         return dataEntryFormStore.getAllDataEntryForms();
     }
-    
+
     public String prepareDataEntryFormForSave( String htmlCode )
     {
         StringBuffer sb = new StringBuffer();
@@ -139,7 +139,7 @@
             // -----------------------------------------------------------------
 
             String dataElementCode = inputMatcher.group();
-            
+
             Matcher valueTagMatcher = VALUE_TAG_PATTERN.matcher( dataElementCode );
             Matcher titleTagMatcher = TITLE_TAG_PATTERN.matcher( dataElementCode );
 
@@ -147,7 +147,7 @@
             {
                 dataElementCode = dataElementCode.replace( valueTagMatcher.group( 1 ), EMPTY );
             }
-            
+
             if ( titleTagMatcher.find() && valueTagMatcher.groupCount() > 0 )
             {
                 dataElementCode = dataElementCode.replace( titleTagMatcher.group( 1 ), EMPTY );
@@ -161,7 +161,7 @@
         return sb.toString();
     }
 
-    public String prepareDataEntryFormForEdit( String htmlCode )
+    public String prepareDataEntryFormForEdit( String htmlCode, I18n i18n )
     {
         StringBuffer sb = new StringBuffer();
 
@@ -181,7 +181,7 @@
 
                 int optionComboId = Integer.parseInt( identifierMatcher.group( 2 ) );
                 DataElementCategoryOptionCombo categegoryOptionCombo = categoryService.getDataElementCategoryOptionCombo( optionComboId );
-                String optionComboName = categegoryOptionCombo != null ? categegoryOptionCombo.getName() : "[ Category option combo does not exist ]";
+                String optionComboName = categegoryOptionCombo != null ? categegoryOptionCombo.getName() : "[ " + i18n.getString( "cate_option_combo_not_exist" ) + " ]";
 
                 // -------------------------------------------------------------
                 // Insert name of data element operand as value and title
@@ -191,11 +191,11 @@
                     new StringBuilder( "title=\"" ).append( dataElement.getId() ).append( " - " ).
                     append( dataElement.getName() ).append( " - " ).append( optionComboId ).append( " - " ).
                     append( optionComboName ).append( " - " ).append( dataElement.getType() ).append( "\"" ) : new StringBuilder();
-                
-                String displayValue = dataElement != null ? "value=\"[ " + dataElement.getName() + " " + optionComboName + " ]\"" : "[ Data element does not exist ]";
-                String displayTitle = dataElement != null ? title.toString() : "[ Data element does not exist ]";
-                
-                inputHtml = inputHtml.contains( EMPTY_VALUE_TAG ) ? inputHtml.replace( EMPTY_VALUE_TAG, displayValue ) : inputHtml + " " + displayValue;                    
+
+                String displayValue = dataElement != null ? "value=\"[ " + dataElement.getName() + " " + optionComboName + " ]\"" : "[ " + i18n.getString( "dataelement_not_exist" ) + " ]";
+                String displayTitle = dataElement != null ? title.toString() : "[ " + i18n.getString( "dataelement_not_exist" ) + " ]";
+
+                inputHtml = inputHtml.contains( EMPTY_VALUE_TAG ) ? inputHtml.replace( EMPTY_VALUE_TAG, displayValue ) : inputHtml + " " + displayValue;
                 inputHtml = inputHtml.contains( EMPTY_TITLE_TAG ) ? inputHtml.replace( EMPTY_TITLE_TAG, displayTitle ) : " " + displayTitle;
 
                 inputMatcher.appendReplacement( sb, inputHtml );
@@ -209,13 +209,13 @@
                 // Insert name of indicator as value and title
                 // -------------------------------------------------------------
 
-                String displayValue = indicator != null ? "value=\"[ " + indicator.getName() + " ]\"" : "[ Indicator does not exist ]";
-                String displayTitle = indicator != null ? "title=\"" + indicator.getName() + "\"" : "[ Indicator does not exist ]";
+                String displayValue = indicator != null ? "value=\"[ " + indicator.getName() + " ]\"" : "[ " + i18n.getString( "indicator_not_exist" ) + " ]";
+                String displayTitle = indicator != null ? "title=\"" + indicator.getName() + "\"" : "[ " + i18n.getString( "indicator_not_exist" ) + " ]";
 
-                inputHtml = inputHtml.contains( EMPTY_VALUE_TAG ) ? inputHtml.replace( EMPTY_VALUE_TAG, displayValue ) : inputHtml + " " + displayValue;                    
+                inputHtml = inputHtml.contains( EMPTY_VALUE_TAG ) ? inputHtml.replace( EMPTY_VALUE_TAG, displayValue ) : inputHtml + " " + displayValue;
                 inputHtml = inputHtml.contains( EMPTY_TITLE_TAG ) ? inputHtml.replace( EMPTY_TITLE_TAG, displayTitle ) : " " + displayTitle;
 
-                inputMatcher.appendReplacement( sb, inputHtml );                
+                inputMatcher.appendReplacement( sb, inputHtml );
             }
         }
 
@@ -229,12 +229,12 @@
         // ---------------------------------------------------------------------
         // Inline javascript/html to add to HTML before output
         // ---------------------------------------------------------------------
-        
+
         int i = 1;
-        
+
         final String codeForInputFields = " name=\"entryfield\" ";
         final String codeForSelectLists = " name=\"entryselect\" ";
-        
+
         StringBuffer sb = new StringBuffer();
 
         Matcher inputMatcher = INPUT_PATTERN.matcher( htmlCode );
@@ -256,18 +256,19 @@
                 int dataElementId = Integer.parseInt( identifierMatcher.group( 1 ) );
                 int optionComboId = Integer.parseInt( identifierMatcher.group( 2 ) );
 
-                DataElement dataElement = dataElementMap.get( dataElementId ); 
+                DataElement dataElement = dataElementMap.get( dataElementId );
 
                 if ( dataElement == null )
                 {
-                    return "Data element with id : " + dataElementId + " does not exist";
+                    return i18n.getString( "dataelement_with_id" ) + ": " + dataElementId + " " + i18n.getString( "does_not_exist" );
                 }
-                
-                DataElementCategoryOptionCombo categoryOptionCombo = categoryService.getDataElementCategoryOptionCombo( optionComboId );
-                
+
+                DataElementCategoryOptionCombo categoryOptionCombo = categoryService
+                    .getDataElementCategoryOptionCombo( optionComboId );
+
                 if ( categoryOptionCombo == null )
                 {
-                    return "Category option combo with id: " + optionComboId + " does not exist";
+                    return i18n.getString( "cate_option_combo_with_id" ) + ": " + optionComboId + " " + i18n.getString( "does_not_exist" );
                 }
 
                 if ( dataElement.getType().equals( DataElement.VALUE_TYPE_BOOL ) )
@@ -280,9 +281,8 @@
                 // Insert title info
                 // -------------------------------------------------------------
 
-                StringBuilder title = new StringBuilder( "title=\"" ).append( dataElement.getName() ).append( " " ).
-                    append( categoryOptionCombo.getName() ).append( "\"" );
-                
+                StringBuilder title = new StringBuilder( "title=\"" ).append( dataElement.getName() ).append( " " ).append( categoryOptionCombo.getName() ).append( "\"" );
+
                 inputHtml = inputHtml.contains( EMPTY_TITLE_TAG ) ? inputHtml.replace( EMPTY_TITLE_TAG, title ) : inputHtml + " " + title;
 
                 String appendCode = "";
@@ -304,7 +304,7 @@
                 inputHtml = inputHtml.replace( TAG_CLOSE, appendCode );
                 inputHtml += "<span id=\"" + dataElement.getId() + "-dataelement\" style=\"display:none\">" + dataElement.getFormNameFallback() + "</span>";
                 inputHtml += "<span id=\"" + categoryOptionCombo.getId() + "-optioncombo\" style=\"display:none\">" + categoryOptionCombo.getName() + "</span>";
-                
+
                 inputMatcher.appendReplacement( sb, inputHtml );
             }
         }
@@ -333,9 +333,9 @@
 
         return dataEntryFormStore.listDisctinctDataEntryFormByDataSetIds( dataSetIds );
     }
-    
+
     public Collection<DataEntryForm> getDataEntryForms( final Collection<Integer> identifiers )
-    {        
+    {
         Collection<DataEntryForm> dataEntryForms = getAllDataEntryForms();
 
         return identifiers == null ? dataEntryForms : FilterUtils.filter( dataEntryForms, new Filter<DataEntryForm>()

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataentryform/DataEntryFormServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataentryform/DataEntryFormServiceTest.java	2011-07-11 10:22:45 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/dataentryform/DataEntryFormServiceTest.java	2011-11-29 07:16:17 +0000
@@ -42,6 +42,8 @@
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.dataset.DataSet;
 import org.hisp.dhis.dataset.DataSetService;
+import org.hisp.dhis.i18n.I18n;
+import org.hisp.dhis.mock.MockI18n;
 import org.hisp.dhis.period.MonthlyPeriodType;
 import org.hisp.dhis.period.PeriodType;
 import org.junit.Test;
@@ -59,6 +61,8 @@
     
     private DataElementCategoryOptionCombo categoryOptionCombo;
     
+    private I18n i18n;
+    
     private int dataElementId;
     
     private int categoryOptionComboId;
@@ -88,6 +92,8 @@
         categoryOptionCombo = categoryService.getDefaultDataElementCategoryOptionCombo();
         
         categoryOptionComboId = categoryOptionCombo.getId();
+        
+        i18n = new MockI18n();
     }
 
     // -------------------------------------------------------------------------
@@ -255,7 +261,7 @@
         String title = "" + dataElementId + " - " + dataElement.getName() + " - " + categoryOptionComboId + " - " + categoryOptionCombo.getName() + " - " + dataElement.getType();
         String value = "[ " + dataElement.getName() + " " + categoryOptionCombo.getName() + " ]";
         String expected = "<table><tr><td><input id=\"" + dataElementId + "-" + categoryOptionComboId + "-val\" style=\"width:4em;text-align:center\" title=\"" + title + "\" value=\"" + value + "\" /></td></tr></table>";
-        String actual = dataEntryFormService.prepareDataEntryFormForEdit( html );
+        String actual = dataEntryFormService.prepareDataEntryFormForEdit( html, i18n );
         
         assertEquals( expected.length(), actual.length() );
     }

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/LoadFormAction.java'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/LoadFormAction.java	2011-09-26 17:37:55 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/LoadFormAction.java	2011-11-29 07:16:17 +0000
@@ -77,7 +77,7 @@
     {
         this.dataElementService = dataElementService;
     }
-    
+
     private DataSetService dataSetService;
 
     public void setDataSetService( DataSetService dataSetService )
@@ -221,7 +221,7 @@
         {
             return INPUT;
         }
-        
+
         Collections.sort( dataElements, dataElementComparator );
 
         orderedDataElements = dataElementService.getGroupedDataElementsByCategoryCombo( dataElements );
@@ -293,7 +293,7 @@
         // ---------------------------------------------------------------------
 
         String displayMode = dataSet.getDataSetType();
-        
+
         if ( displayMode.equals( DataSet.TYPE_SECTION ) )
         {
             getSectionForm( dataElements, dataSet );
@@ -341,8 +341,8 @@
 
         if ( dataEntryForm != null )
         {
-            customDataEntryFormCode = dataEntryFormService.prepareDataEntryFormForEntry( 
-                dataEntryForm.getHtmlCode(), i18n, dataSet );
+            customDataEntryFormCode = dataEntryFormService.prepareDataEntryFormForEntry( dataEntryForm.getHtmlCode(),
+                i18n, dataSet );
         }
 
         List<DataElement> des = new ArrayList<DataElement>();

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties	2011-11-02 17:11:00 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module.properties	2011-11-29 07:16:17 +0000
@@ -141,4 +141,10 @@
 mark_value_for_followup				= Mark value for follow-up
 unmark_value_for_followup			= Un-mark value for follow-up
 completed_by						= Completed by
-at									= at
\ No newline at end of file
+at									= at
+dataelement_with_id					= Data element with id
+dataelement_not_exist				= Data element does not exist
+cate_option_combo_with_id			= Category option combo with id
+cate_option_combo_not_exist			= Category option combo does not exist
+indicator_not_exist					= Indicator does not exist
+does_not_exist						= does not exist
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties'
--- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties	2011-11-01 08:58:48 +0000
+++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/org/hisp/dhis/de/i18n_module_vi_VN.properties	2011-11-29 07:16:17 +0000
@@ -1,158 +1,164 @@
 #Resource generated by I18n Resource Editor
 #Fri Oct 28 14:19:29 ICT 2011
-unmark_value_for_followup=H\u1EE7y ch\u1ECDn gi\u00E1 tr\u1ECB theo d\u00F5i
-expression=Bi\u1EC3u th\u1EE9c
-not_set=Ch\u01B0a thi\u1EBFt l\u1EADp
-data_set=Bi\u1EC3u nh\u1EADp li\u1EC7u
-value_must_positive_integer=Gi\u00E1 tr\u1ECB ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn d\u01B0\u01A1ng v\u00E0 \u0111\u1ED9 \u0111\u00E0i d\u01B0\u1EDBi 255 k\u00FD t\u1EF1.
-value=Gi\u00E1 tr\u1ECB
-saving_value_failed_error_code=L\u01B0u gi\u00E1 tr\u1ECB kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
-select_from_tree=Ch\u1ECDn \u0111\u01A1n v\u1ECB nh\u1EADp \u1EDF ph\u00EDa tay tr\u00E1i
-reset_order_inherit=Thi\u1EBFt l\u1EADp th\u1EE9 t\u1EF1/th\u1EEBa k\u1EBF t\u1EEB cha
-the_following_values_are_outliers=C\u00E1c gi\u00E1 tr\u1ECB sau \u0111\u00E2y \u0111\u01B0\u1EE3c xem nh\u01B0 kh\u00F4ng c\u00F3 trong h\u1EC7 th\u1ED1ng.
-no_outlier_values_found=Kh\u00F4ng t\u00ECm th\u1EA5y gi\u00E1 tr\u1ECB b\u00EAn ngo\u00E0i n\u00E0o.
-register_complete_dataset_success=M\u1EABu d\u1EEF li\u1EC7u \u0111\u00E3 \u0111\u0103ng k\u00FD
-register_complete_dataset_failed=\u0110\u0103ng k\u00FD m\u1EABu d\u1EEF li\u1EC7u th\u1EA5t b\u1EA1i
-value_date=Gi\u00E1 tr\u1ECB ng\u00E0y
-min_limit=Gi\u1EDBi h\u1EA1n th\u1EA5p nh\u1EA5t
-minimum=Nh\u1ECF nh\u1EA5t
-no_value=Kh\u00F4ng c\u00F3 gi\u00E1 tr\u1ECB
-timestamp=Th\u1EDDi \u0111i\u1EC3m
-specify_input_date=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh ng\u00E0y nh\u1EADp
-complete=Ho\u00E0n ch\u1EC9nh
-specify_valid_input_date=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh m\u1ED9t ng\u00E0y nh\u1EADp h\u1EE3p l\u1EC7
-edit_min_max=Ch\u1EC9nh s\u1EEDa gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t
-validate=Ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
-value_must_negative_integer=Gi\u00E1 tr\u1ECB ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn \u00E2m v\u00E0 \u0111\u1ED9 \u0111\u00E0i d\u01B0\u1EDBi 255 k\u00FD t\u1EF1.
-import_export=T\u00EDch h\u1EE3p/Xu\u1EA5t ra
-audit_value=Ki\u1EC3m tra gi\u00E1 tr\u1ECB
-order_by_entry=Th\u1EE9 t\u1EF1 theo \u0111\u0103ng k\u00FD
-saving_minmax_failed_error_code=L\u01B0u gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t/nh\u1ECF nh\u1EA5t kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
-audit_time=Th\u1EDDi gian ki\u1EC3m tra
-stored_date=Ng\u00E0y l\u01B0u tr\u1EEF
-maximum=L\u1EDBn nh\u1EA5t
-select_data_set=Ch\u1ECDn bi\u1EC3u nh\u1EADp
-type=Ki\u1EC3u d\u1EEF li\u1EC7u
-order_by_code=Th\u1EE9 t\u1EF1 theo m\u00E3
-followup=Ti\u1EBFp theo
-up=L\u00EAn
-down=Xu\u1ED1ng
-audit_stored_by=Th\u1EF1c hi\u1EC7n b\u1EDFi
-dataelement_comment=G\u00F3p \u00FD
-no_comment=Kh\u00F4ng c\u00F3 ch\u00FA th\u00EDch
-specify_maximum_value=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t
-field_unallowed_save_zero=Ph\u1EA7n t\u1EED n\u00E0y kh\u00F4ng l\u01B0u gi\u00E1 tr\u1ECB 0. Gi\u00E1 tr\u1ECB c\u0169 kh\u00F4ng b\u1ECB \u1EA3nh h\u01B0\u1EDFng. 
-offline_notification=B\u1EA1n \u0111ang offline, d\u1EEF li\u1EC7u s\u1EBD \u0111\u01B0\u1EE3c l\u01B0u tr\u1EEF c\u1EE5c b\u1ED9
-mark_value_for_followup=Ch\u1ECDn gi\u00E1 tr\u1ECB \u0111\u1EC3 theo d\u00F5i
-later_periods=Th\u1EDDi k\u1EF3 sau
-use_default_form=D\u00F9ng bi\u1EC3u li\u1EC7t k\u00EA
-audit=Ki\u1EC3m tra gi\u00E1 tr\u1ECB d\u1EEF li\u1EC7u
-move=Chuy\u1EC3n
-use_standard_form=Nh\u1EADp theo m\u1EABu chu\u1EA9n
-generate_missing_values=Ph\u00E1t sinh nh\u1EEFng gi\u00E1 tr\u1ECB ch\u01B0a c\u00F3
-to=th\u00E0nh
-generate_min_max=T\u1EA1o ra nh\u1ECF nh\u1EA5t/l\u1EDBn nh\u1EA5t
-earlier_periods=Th\u1EDDi k\u1EF3 tr\u01B0\u1EDBc
-max=L\u1EDBn nh\u1EA5t
-edit_min_max_for=Ch\u1EC9nh s\u1EEDa gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t cho
-value_must_number=Gi\u00E1 tr\u1ECB ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 th\u1EF1c v\u00E0 \u0111\u1ED9 \u0111\u00E0i d\u01B0\u1EDBi 255 k\u00FD t\u1EF1.
-left_description=M\u00F4 t\u1EA3 v\u1EBF tr\u00E1i
-confirm_undo=B\u1EA1n c\u00F3 ch\u1EAFc ch\u1EAFn s\u1EEDa \u0111\u1ED5i d\u1EEF li\u1EC7u nh\u1EADp?
-change_from=thay \u0111\u1ED5i t\u1EEB
-incomplete=S\u1EEDa \u0111\u1ED5i d\u1EEF li\u1EC7u nh\u1EADp
-audit_from=T\u1EEB
-period=Th\u1EDDi \u0111i\u1EC3m
-confirm_complete=B\u1EA1n c\u00F3 ch\u1EAFc ch\u1EAFn d\u1EEF li\u1EC7u nh\u1EADp n\u00E0y \u0111\u00E3 ho\u00E0n ch\u1EC9nh?
-no_period_selected=Kh\u00F4ng th\u1EDDi \u0111i\u1EC3m n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
+unmark_value_for_followup=H\u1ee7y ch\u1ecdn gi\u00e1 tr\u1ecb theo d\u00f5i
+expression=Bi\u1ec3u th\u1ee9c
+not_set=Ch\u01b0a thi\u1ebft l\u1eadp
+data_set=Bi\u1ec3u nh\u1eadp li\u1ec7u
+value_must_positive_integer=Gi\u00e1 tr\u1ecb ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean d\u01b0\u01a1ng v\u00e0 \u0111\u1ed9 \u0111\u00e0i d\u01b0\u1edbi 255 k\u00fd t\u1ef1.
+value=Gi\u00e1 tr\u1ecb
+saving_value_failed_error_code=L\u01b0u gi\u00e1 tr\u1ecb kh\u00f4ng th\u00e0nh c\u00f4ng v\u1edbi m\u00e3 l\u1ed7i
+select_from_tree=Ch\u1ecdn \u0111\u01a1n v\u1ecb nh\u1eadp \u1edf ph\u00eda tay tr\u00e1i
+reset_order_inherit=Thi\u1ebft l\u1eadp th\u1ee9 t\u1ef1/th\u1eeba k\u1ebf t\u1eeb cha
+the_following_values_are_outliers=C\u00e1c gi\u00e1 tr\u1ecb sau \u0111\u00e2y \u0111\u01b0\u1ee3c xem nh\u01b0 kh\u00f4ng c\u00f3 trong h\u1ec7 th\u1ed1ng.
+no_outlier_values_found=Kh\u00f4ng t\u00ecm th\u1ea5y gi\u00e1 tr\u1ecb b\u00ean ngo\u00e0i n\u00e0o.
+register_complete_dataset_success=M\u1eabu d\u1eef li\u1ec7u \u0111\u00e3 \u0111\u0103ng k\u00fd
+register_complete_dataset_failed=\u0110\u0103ng k\u00fd m\u1eabu d\u1eef li\u1ec7u th\u1ea5t b\u1ea1i
+value_date=Gi\u00e1 tr\u1ecb ng\u00e0y
+min_limit=Gi\u1edbi h\u1ea1n th\u1ea5p nh\u1ea5t
+minimum=Nh\u1ecf nh\u1ea5t
+no_value=Kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb
+timestamp=Th\u1eddi \u0111i\u1ec3m
+specify_input_date=Vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh ng\u00e0y nh\u1eadp
+complete=Ho\u00e0n ch\u1ec9nh
+specify_valid_input_date=Vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh m\u1ed9t ng\u00e0y nh\u1eadp h\u1ee3p l\u1ec7
+edit_min_max=Ch\u1ec9nh s\u1eeda gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t / l\u1edbn nh\u1ea5t
+validate=Ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+value_must_negative_integer=Gi\u00e1 tr\u1ecb ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean \u00e2m v\u00e0 \u0111\u1ed9 \u0111\u00e0i d\u01b0\u1edbi 255 k\u00fd t\u1ef1.
+import_export=T\u00edch h\u1ee3p/Xu\u1ea5t ra
+audit_value=Ki\u1ec3m tra gi\u00e1 tr\u1ecb
+order_by_entry=Th\u1ee9 t\u1ef1 theo \u0111\u0103ng k\u00fd
+saving_minmax_failed_error_code=L\u01b0u gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t kh\u00f4ng th\u00e0nh c\u00f4ng v\u1edbi m\u00e3 l\u1ed7i
+audit_time=Th\u1eddi gian ki\u1ec3m tra
+stored_date=Ng\u00e0y l\u01b0u tr\u1eef
+maximum=L\u1edbn nh\u1ea5t
+select_data_set=Ch\u1ecdn bi\u1ec3u nh\u1eadp
+type=Ki\u1ec3u d\u1eef li\u1ec7u
+order_by_code=Th\u1ee9 t\u1ef1 theo m\u00e3
+followup=Ti\u1ebfp theo
+up=L\u00ean
+down=Xu\u1ed1ng
+audit_stored_by=Th\u1ef1c hi\u1ec7n b\u1edfi
+dataelement_comment=G\u00f3p \u00fd
+no_comment=Kh\u00f4ng c\u00f3 ch\u00fa th\u00edch
+specify_maximum_value=Vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t
+field_unallowed_save_zero=Ph\u1ea7n t\u1eed n\u00e0y kh\u00f4ng l\u01b0u gi\u00e1 tr\u1ecb 0. Gi\u00e1 tr\u1ecb c\u0169 kh\u00f4ng b\u1ecb \u1ea3nh h\u01b0\u1edfng. 
+offline_notification=B\u1ea1n \u0111ang offline, d\u1eef li\u1ec7u s\u1ebd \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef c\u1ee5c b\u1ed9
+mark_value_for_followup=Ch\u1ecdn gi\u00e1 tr\u1ecb \u0111\u1ec3 theo d\u00f5i
+later_periods=Th\u1eddi k\u1ef3 sau
+use_default_form=D\u00f9ng bi\u1ec3u li\u1ec7t k\u00ea
+audit=Ki\u1ec3m tra gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
+move=Chuy\u1ec3n
+use_standard_form=Nh\u1eadp theo m\u1eabu chu\u1ea9n
+generate_missing_values=Ph\u00e1t sinh nh\u1eefng gi\u00e1 tr\u1ecb ch\u01b0a c\u00f3
+to=th\u00e0nh
+generate_min_max=T\u1ea1o ra nh\u1ecf nh\u1ea5t/l\u1edbn nh\u1ea5t
+earlier_periods=Th\u1eddi k\u1ef3 tr\u01b0\u1edbc
+max=L\u1edbn nh\u1ea5t
+edit_min_max_for=Ch\u1ec9nh s\u1eeda gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t / l\u1edbn nh\u1ea5t cho
+value_must_number=Gi\u00e1 tr\u1ecb ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 th\u1ef1c v\u00e0 \u0111\u1ed9 \u0111\u00e0i d\u01b0\u1edbi 255 k\u00fd t\u1ef1.
+left_description=M\u00f4 t\u1ea3 v\u1ebf tr\u00e1i
+confirm_undo=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn s\u1eeda \u0111\u1ed5i d\u1eef li\u1ec7u nh\u1eadp?
+change_from=thay \u0111\u1ed5i t\u1eeb
+incomplete=S\u1eeda \u0111\u1ed5i d\u1eef li\u1ec7u nh\u1eadp
+audit_from=T\u1eeb
+period=Th\u1eddi \u0111i\u1ec3m
+confirm_complete=B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn d\u1eef li\u1ec7u nh\u1eadp n\u00e0y \u0111\u00e3 ho\u00e0n ch\u1ec9nh?
+no_period_selected=Kh\u00f4ng th\u1eddi \u0111i\u1ec3m n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn
 next=Sau
-value_of_data_element_less=Gi\u00E1 tr\u1ECB c\u1EE7a th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u th\u1EA5p h\u01A1n gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t cho ph\u00E9p
-no_option_selected=Kh\u00F4ng t\u00F9y ch\u1ECDn n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
-audit_operation=Lo\u1EA1i thao t\u00E1c
-operator=To\u00E1n t\u1EED
-operation_not_available_offline=Ph\u00E9p t\u00EDnh kh\u00F4ng th\u1EF1c hi\u1EC7n \u0111\u01B0\u1EE3c \u1EDF ch\u1EBF \u0111\u1ED9 offline
-minimum_value_must_integer=Gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
-right_description=M\u00F4 t\u1EA3 v\u1EBF ph\u1EA3i
-multidimensional_data_entry=Nh\u1EADp d\u1EEF li\u1EC7u \u0111a chi\u1EC1u
-dv_updated=\u0110\u00E3 c\u1EADp nh\u1EADt
-data_entry=Nh\u1EADp d\u1EEF li\u1EC7u
-validation_result=K\u1EBFt qu\u1EA3 ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
-custom_comment=Ch\u00FA th\u00EDch ng\u1EABu nhi\u00EAn
-enter_digits=Ch\u1EC9 nh\u1EADp k\u00FD t\u1EF1 s\u1ED1
-max_limit=Gi\u1EDBi h\u1EA1n cao nh\u1EA5t
-generate_min_max_success=C\u00E1c gi\u00E1 tr\u1ECB nh\u1ECF/l\u1EDBn nh\u1EA5t \u0111\u01B0\u1EE3c t\u1EA1o
-generate_values=Ph\u00E1t sinh gi\u00E1 tr\u1ECB
-value_of_data_element_greater=Gi\u00E1 tr\u1ECB c\u1EE7a th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u sau l\u1EDBn h\u01A1n gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t cho ph\u00E9p
-greater_than=L\u1EDBn h\u01A1n
-code=M\u00E3 ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u
-change=Thay \u0111\u1ED5i
-unsuccessful_validation=Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7. C\u1EE5 th\u1EC3 nh\u01B0 sau\:
-export_entry_template=Xu\u1EA5t m\u00E0n h\u00ECnh nh\u1EADp li\u1EC7u ra file Excel
-history_not_valid=L\u1ECBch s\u1EED d\u1EEF li\u1EC7u kh\u00F4ng \u0111\u01B0\u1EE3c \u00E1p d\u1EE5ng cho ph\u1EA7n t\u1EED d\u1EEF li\u1EC7u n\u00E0y\!
-sync_failed=T\u1EA3i l\u00EAn m\u00E1y ch\u1EE7 th\u1EA5t b\u1EA1i, h\u00E3y th\u1EED l\u1EA1i
-sync_now=T\u1EA3i l\u00EAn
-no_dataelement_selected=Kh\u00F4ng th\u00E0nh ph\u1EA7n d\u1EEF li\u1EC7u n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
-maximum_value_must_integer=Gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn
-date=Ng\u00E0y
-move_up=Di chuy\u1EC3n l\u00EAn tr\u00EAn
-no_response_from_server=Kh\u00F4ng c\u00F3 ph\u1EA3n h\u1ED3i t\u1EEB m\u00E1y ch\u1EE7, h\u00E3y ki\u1EC3m tra k\u1EBFt n\u1ED1i m\u1EA1ng v\u00E0 th\u1EED l\u1EA1i
-specify_minimum_value=Vui l\u00F2ng ch\u1EC9 \u0111\u1ECBnh gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t
-datavalue_history=L\u1ECBch s\u1EED gi\u00E1 tr\u1ECB d\u1EEF li\u1EC7u
-hide_entry_form=\u1EA8n bi\u1EC3u nh\u1EADp
-dv_deleted=\u0110\u00E3 x\u00F3a
-value_type=Lo\u1EA1i gi\u00E1 tr\u1ECB
-min_max_values=Gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t/nh\u1ECF nh\u1EA5t
-undo_register_complete_dataset_success=H\u1EE7y \u0111\u0103ng k\u00FD bi\u1EC3u nh\u1EADp th\u00E0nh c\u00F4ng
-data_element_order=Th\u1EE9 t\u1EF1 D\u1EEF li\u1EC7u
-value_must_integer=Gi\u00E1 tr\u1ECB ph\u1EA3i l\u00E0 m\u1ED9t s\u1ED1 nguy\u00EAn v\u00E0 \u0111\u1ED9 \u0111\u00E0i d\u01B0\u1EDBi 255 k\u00FD t\u1EF1.
-the_following_values_violate_rules=C\u00E1c gi\u00E1 tr\u1ECB sau vi ph\u1EA1m \u0111i\u1EC1u ki\u1EC7n
-saving_comment_failed_error_code=L\u01B0u ch\u00FA th\u00EDch kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 l\u1ED7i
-please_design_a_custom_form=Vui l\u00F2ng thi\u1EBFt k\u1EBF m\u1ED9t giao di\u1EC7n cho t\u1EADp h\u1EE3p d\u1EEF li\u1EC7u n\u00E0y\!
-not_equal_to=Kh\u00F4ng b\u1EB1ng
-need_to_sync_notification=D\u1EEF li\u1EC7u \u0111\u01B0\u1EE3c l\u01B0u tr\u1EEF c\u1EE5c b\u1ED9, h\u00E3y t\u1EA3i l\u00EAn m\u00E1y ch\u1EE7
-min=Nh\u1ECF nh\u1EA5t
-move_down=Di chuy\u1EC3n xu\u1ED1ng d\u01B0\u1EDBi
-available_sections=C\u00E1c m\u1EE5c s\u1EB5n c\u00F3
-save=L\u01B0u
-on=V\u00E0o l\u00FAc
-the_following_values_violates_rules=C\u00E1c gi\u00E1 tr\u1ECB sau \u0111\u00E2y kh\u00F4ng h\u1EE3p l\u1EC7
-online_notification=B\u1EA1n \u0111ang online
-use_custom_form=D\u00F9ng bi\u1EC3u thi\u1EBFt k\u1EBF
-prev=Tr\u01B0\u1EDBc
-entry=Gi\u00E1 tr\u1ECB
-delete_min_max_values=X\u00F3a gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t / l\u1EDBn nh\u1EA5t
-uploading_data_notification=\u0110ang t\u1EA3i d\u1EEF li\u1EC7u c\u1EE5c b\u1ED9 \u0111\u1EBFn m\u00E1y ch\u1EE7
-interpolation=Ph\u00E9p n\u1ED9i suy
-audit_to=\u0110\u1EBFn
-successful_validation=M\u00E0n h\u00ECnh nh\u1EADp li\u1EC7u th\u00E0nh c\u00F4ng ki\u1EC3m tra d\u1EEF li\u1EC7u
-nr=S\u1ED1
-sync_success=Th\u00E0nh c\u00F4ng t\u1EA3i l\u00EAn m\u00E1y ch\u1EE7
-minimum_must_less_than_maximum=Gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t ph\u1EA3i nh\u1ECF h\u01A1n gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t
-select_period=Ch\u1ECDn th\u1EDDi \u0111i\u1EC3m
-organisation_unit=\u0110\u01A1n v\u1ECB
-select=Ch\u1ECDn
-stored_by=Ng\u01B0\u1EDDi nh\u1EADp li\u1EC7u
-less_than=B\u00E9/\u00CDt h\u01A1n
-use_short_names=D\u00F9ng t\u00EAn vi\u1EBFt t\u1EAFt
-dv_added=\u0110\u00E3 th\u00EAm
-no_organisationunit_selected=Kh\u00F4ng \u0111\u01A1n v\u1ECB n\u00E0o \u0111\u01B0\u1EE3c ch\u1ECDn
-saving_comment_failed_status_code=L\u01B0u ch\u00FA th\u00EDch kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 tr\u1EA1ng th\u00E1i
-use_section_form=D\u00F9ng bi\u1EC3u s\u1EAFp x\u1EBFp
-run_validation=Ki\u1EC3m tra d\u1EEF li\u1EC7u
-value_is_too_long=Gi\u00E1 tr\u1ECB qu\u00E1 d\u00E0i
-data_entry_is_not_possible=Kh\u00F4ng th\u1EC3 nh\u1EADp d\u1EEF li\u1EC7u v\u00EC bi\u1EC3u nh\u1EADp ch\u01B0a c\u00F3 ph\u1EA7n t\u1EED.
-saving_value_failed_status_code=L\u01B0u gi\u00E1 tr\u1ECB kh\u00F4ng th\u00E0nh c\u00F4ng v\u1EDBi m\u00E3 tr\u1EA1ng th\u00E1i
-validation_rule=Quy t\u1EAFc ki\u1EC3m tra t\u00EDnh h\u1EE3p l\u1EC7
-min_max_limits=Gi\u1EDBi h\u1EA1n l\u1EDBn nh\u1EA5t - nh\u1ECF nh\u1EA5t
-please_select=H\u00E3y ch\u1ECDn
-greater_than_or_equal_to=L\u1EDBn h\u01A1n ho\u1EB7c b\u1EB1ng
-open_entry_form=M\u1EDF bi\u1EC3u nh\u1EADp
-undo=S\u1EEDa l\u1EA1i b\u00E1o c\u00E1o
-save_comment=L\u01B0u \u00FD ki\u1EBFn
-equal_to=B\u1EB1ng v\u1EDBi
-import_from_excel=Nh\u1EADp t\u1EEB file Excel (M\u1EABu \u0111\u00E3 \u0111\u01B0\u1EE3c xu\u1EA5t ra)
-ajax_login_failed=\u0110\u0103ng nh\u1EADp kh\u00F4ng th\u00E0nh c\u00F4ng. Ki\u1EC3m tra l\u1EA1i t\u00EAn t\u00E0i kho\u1EA3n v\u00E0 m\u1EADt kh\u1EA9u m\u1ED9t l\u1EA7n n\u1EEFa
-change_order=\u0110\u1ED5i th\u1EE9 t\u1EF1
-dataelement_history=L\u1ECBch s\u1EED d\u1EEF li\u1EC7u
-data_element=D\u1EEF li\u1EC7u
-max_must_be_greater_than_min=Gi\u00E1 tr\u1ECB l\u1EDBn nh\u1EA5t ph\u1EA3i h\u01A1n gi\u00E1 tr\u1ECB nh\u1ECF nh\u1EA5t
-order_by_name=Th\u1EE9 t\u1EF1 theo t\u00EAn
+value_of_data_element_less=Gi\u00e1 tr\u1ecb c\u1ee7a th\u00e0nh ph\u1ea7n d\u1eef li\u1ec7u th\u1ea5p h\u01a1n gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t cho ph\u00e9p
+no_option_selected=Kh\u00f4ng t\u00f9y ch\u1ecdn n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn
+audit_operation=Lo\u1ea1i thao t\u00e1c
+operator=To\u00e1n t\u1eed
+operation_not_available_offline=Ph\u00e9p t\u00ednh kh\u00f4ng th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c \u1edf ch\u1ebf \u0111\u1ed9 offline
+minimum_value_must_integer=Gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean
+right_description=M\u00f4 t\u1ea3 v\u1ebf ph\u1ea3i
+multidimensional_data_entry=Nh\u1eadp d\u1eef li\u1ec7u \u0111a chi\u1ec1u
+dv_updated=\u0110\u00e3 c\u1eadp nh\u1eadt
+data_entry=Nh\u1eadp d\u1eef li\u1ec7u
+validation_result=K\u1ebft qu\u1ea3 ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+custom_comment=Ch\u00fa th\u00edch ng\u1eabu nhi\u00ean
+enter_digits=Ch\u1ec9 nh\u1eadp k\u00fd t\u1ef1 s\u1ed1
+max_limit=Gi\u1edbi h\u1ea1n cao nh\u1ea5t
+generate_min_max_success=C\u00e1c gi\u00e1 tr\u1ecb nh\u1ecf/l\u1edbn nh\u1ea5t \u0111\u01b0\u1ee3c t\u1ea1o
+generate_values=Ph\u00e1t sinh gi\u00e1 tr\u1ecb
+value_of_data_element_greater=Gi\u00e1 tr\u1ecb c\u1ee7a th\u00e0nh ph\u1ea7n d\u1eef li\u1ec7u sau l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t cho ph\u00e9p
+greater_than=L\u1edbn h\u01a1n
+code=M\u00e3 ph\u1ea7n t\u1eed d\u1eef li\u1ec7u
+change=Thay \u0111\u1ed5i
+unsuccessful_validation=Gi\u00e1 tr\u1ecb kh\u00f4ng h\u1ee3p l\u1ec7. C\u1ee5 th\u1ec3 nh\u01b0 sau\:
+export_entry_template=Xu\u1ea5t m\u00e0n h\u00ecnh nh\u1eadp li\u1ec7u ra file Excel
+history_not_valid=L\u1ecbch s\u1eed d\u1eef li\u1ec7u kh\u00f4ng \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng cho ph\u1ea7n t\u1eed d\u1eef li\u1ec7u n\u00e0y\!
+sync_failed=T\u1ea3i l\u00ean m\u00e1y ch\u1ee7 th\u1ea5t b\u1ea1i, h\u00e3y th\u1eed l\u1ea1i
+sync_now=T\u1ea3i l\u00ean
+no_dataelement_selected=Kh\u00f4ng th\u00e0nh ph\u1ea7n d\u1eef li\u1ec7u n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn
+maximum_value_must_integer=Gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean
+date=Ng\u00e0y
+move_up=Di chuy\u1ec3n l\u00ean tr\u00ean
+no_response_from_server=Kh\u00f4ng c\u00f3 ph\u1ea3n h\u1ed3i t\u1eeb m\u00e1y ch\u1ee7, h\u00e3y ki\u1ec3m tra k\u1ebft n\u1ed1i m\u1ea1ng v\u00e0 th\u1eed l\u1ea1i
+specify_minimum_value=Vui l\u00f2ng ch\u1ec9 \u0111\u1ecbnh gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t
+datavalue_history=L\u1ecbch s\u1eed gi\u00e1 tr\u1ecb d\u1eef li\u1ec7u
+hide_entry_form=\u1ea8n bi\u1ec3u nh\u1eadp
+dv_deleted=\u0110\u00e3 x\u00f3a
+value_type=Lo\u1ea1i gi\u00e1 tr\u1ecb
+min_max_values=Gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t/nh\u1ecf nh\u1ea5t
+undo_register_complete_dataset_success=H\u1ee7y \u0111\u0103ng k\u00fd bi\u1ec3u nh\u1eadp th\u00e0nh c\u00f4ng
+data_element_order=Th\u1ee9 t\u1ef1 D\u1eef li\u1ec7u
+value_must_integer=Gi\u00e1 tr\u1ecb ph\u1ea3i l\u00e0 m\u1ed9t s\u1ed1 nguy\u00ean v\u00e0 \u0111\u1ed9 \u0111\u00e0i d\u01b0\u1edbi 255 k\u00fd t\u1ef1.
+the_following_values_violate_rules=C\u00e1c gi\u00e1 tr\u1ecb sau vi ph\u1ea1m \u0111i\u1ec1u ki\u1ec7n
+saving_comment_failed_error_code=L\u01b0u ch\u00fa th\u00edch kh\u00f4ng th\u00e0nh c\u00f4ng v\u1edbi m\u00e3 l\u1ed7i
+please_design_a_custom_form=Vui l\u00f2ng thi\u1ebft k\u1ebf m\u1ed9t giao di\u1ec7n cho t\u1eadp h\u1ee3p d\u1eef li\u1ec7u n\u00e0y\!
+not_equal_to=Kh\u00f4ng b\u1eb1ng
+need_to_sync_notification=D\u1eef li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef c\u1ee5c b\u1ed9, h\u00e3y t\u1ea3i l\u00ean m\u00e1y ch\u1ee7
+min=Nh\u1ecf nh\u1ea5t
+move_down=Di chuy\u1ec3n xu\u1ed1ng d\u01b0\u1edbi
+available_sections=C\u00e1c m\u1ee5c s\u1eb5n c\u00f3
+save=L\u01b0u
+on=V\u00e0o l\u00fac
+the_following_values_violates_rules=C\u00e1c gi\u00e1 tr\u1ecb sau \u0111\u00e2y kh\u00f4ng h\u1ee3p l\u1ec7
+online_notification=B\u1ea1n \u0111ang online
+use_custom_form=D\u00f9ng bi\u1ec3u thi\u1ebft k\u1ebf
+prev=Tr\u01b0\u1edbc
+entry=Gi\u00e1 tr\u1ecb
+delete_min_max_values=X\u00f3a gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t / l\u1edbn nh\u1ea5t
+uploading_data_notification=\u0110ang t\u1ea3i d\u1eef li\u1ec7u c\u1ee5c b\u1ed9 \u0111\u1ebfn m\u00e1y ch\u1ee7
+interpolation=Ph\u00e9p n\u1ed9i suy
+audit_to=\u0110\u1ebfn
+successful_validation=M\u00e0n h\u00ecnh nh\u1eadp li\u1ec7u th\u00e0nh c\u00f4ng ki\u1ec3m tra d\u1eef li\u1ec7u
+nr=S\u1ed1
+sync_success=Th\u00e0nh c\u00f4ng t\u1ea3i l\u00ean m\u00e1y ch\u1ee7
+minimum_must_less_than_maximum=Gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t ph\u1ea3i nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t
+select_period=Ch\u1ecdn th\u1eddi \u0111i\u1ec3m
+organisation_unit=\u0110\u01a1n v\u1ecb
+select=Ch\u1ecdn
+stored_by=Ng\u01b0\u1eddi nh\u1eadp li\u1ec7u
+less_than=B\u00e9/\u00cdt h\u01a1n
+use_short_names=D\u00f9ng t\u00ean vi\u1ebft t\u1eaft
+dv_added=\u0110\u00e3 th\u00eam
+no_organisationunit_selected=Kh\u00f4ng \u0111\u01a1n v\u1ecb n\u00e0o \u0111\u01b0\u1ee3c ch\u1ecdn
+saving_comment_failed_status_code=L\u01b0u ch\u00fa th\u00edch kh\u00f4ng th\u00e0nh c\u00f4ng v\u1edbi m\u00e3 tr\u1ea1ng th\u00e1i
+use_section_form=D\u00f9ng bi\u1ec3u s\u1eafp x\u1ebfp
+run_validation=Ki\u1ec3m tra d\u1eef li\u1ec7u
+value_is_too_long=Gi\u00e1 tr\u1ecb qu\u00e1 d\u00e0i
+data_entry_is_not_possible=Kh\u00f4ng th\u1ec3 nh\u1eadp d\u1eef li\u1ec7u v\u00ec bi\u1ec3u nh\u1eadp ch\u01b0a c\u00f3 ph\u1ea7n t\u1eed.
+saving_value_failed_status_code=L\u01b0u gi\u00e1 tr\u1ecb kh\u00f4ng th\u00e0nh c\u00f4ng v\u1edbi m\u00e3 tr\u1ea1ng th\u00e1i
+validation_rule=Quy t\u1eafc ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7
+min_max_limits=Gi\u1edbi h\u1ea1n l\u1edbn nh\u1ea5t - nh\u1ecf nh\u1ea5t
+please_select=H\u00e3y ch\u1ecdn
+greater_than_or_equal_to=L\u1edbn h\u01a1n ho\u1eb7c b\u1eb1ng
+open_entry_form=M\u1edf bi\u1ec3u nh\u1eadp
+undo=S\u1eeda l\u1ea1i b\u00e1o c\u00e1o
+save_comment=L\u01b0u \u00fd ki\u1ebfn
+equal_to=B\u1eb1ng v\u1edbi
+import_from_excel=Nh\u1eadp t\u1eeb file Excel (M\u1eabu \u0111\u00e3 \u0111\u01b0\u1ee3c xu\u1ea5t ra)
+ajax_login_failed=\u0110\u0103ng nh\u1eadp kh\u00f4ng th\u00e0nh c\u00f4ng. Ki\u1ec3m tra l\u1ea1i t\u00ean t\u00e0i kho\u1ea3n v\u00e0 m\u1eadt kh\u1ea9u m\u1ed9t l\u1ea7n n\u1eefa
+change_order=\u0110\u1ed5i th\u1ee9 t\u1ef1
+dataelement_history=L\u1ecbch s\u1eed d\u1eef li\u1ec7u
+data_element=D\u1eef li\u1ec7u
+max_must_be_greater_than_min=Gi\u00e1 tr\u1ecb l\u1edbn nh\u1ea5t ph\u1ea3i h\u01a1n gi\u00e1 tr\u1ecb nh\u1ecf nh\u1ea5t
+order_by_name=Th\u1ee9 t\u1ef1 theo t\u00ean
+dataelement_with_id=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u c\u00f3 m\u00e3
+dataelement_not_exist=Ph\u1ea7n t\u1eed d\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i
+cate_option_combo_with_id=T\u1eadp m\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i c\u00f3 m\u00e3
+cate_option_combo_not_exist=T\u1eadp m\u1ee5c ch\u1ecdn ph\u00e2n lo\u1ea1i kh\u00f4ng t\u1ed3n t\u1ea1i
+indicator_not_exist=Ch\u1ec9 s\u1ed1 kh\u00f4ng t\u1ed3n t\u1ea1i
+does_not_exist=kh\u00f4ng t\u1ed3n t\u1ea1i
\ No newline at end of file