mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[1.6.x] Fixed #21372 -- Corrected docs regarding translating LANGUAGES.
Corrected LANGUAGES documentation on how to translate language
names. Now using django.utils.translation.ugettext_lazy instead
of a dummy gettext() function.
Thanks to Salvatore for the report.
Backport of 8bc350b385 from master.
			
			
This commit is contained in:
		
				
					committed by
					
						 Baptiste Mispelon
						Baptiste Mispelon
					
				
			
			
				
	
			
			
			
						parent
						
							4b9e932fd4
						
					
				
				
					commit
					4aed1ee339
				
			| @@ -1325,29 +1325,19 @@ This specifies which languages are available for language selection. See | ||||
| Generally, the default value should suffice. Only set this setting if you want | ||||
| to restrict language selection to a subset of the Django-provided languages. | ||||
|  | ||||
| If you define a custom :setting:`LANGUAGES` setting, it's OK to mark the | ||||
| languages as translation strings (as in the default value referred to above) | ||||
| -- but use a "dummy" ``gettext()`` function, not the one in | ||||
| ``django.utils.translation``. You should *never* import | ||||
| ``django.utils.translation`` from within your settings file, because that | ||||
| module in itself depends on the settings, and that would cause a circular | ||||
| import. | ||||
| If you define a custom :setting:`LANGUAGES` setting, you can mark the | ||||
| language names as translation strings using the | ||||
| :func:`~django.utils.translation.ugettext_lazy` function. | ||||
|  | ||||
| The solution is to use a "dummy" ``gettext()`` function. Here's a sample | ||||
| settings file:: | ||||
| Here's a sample settings file:: | ||||
|  | ||||
|     gettext = lambda s: s | ||||
|     from django.utils.translation import ugettext_lazy as _ | ||||
|  | ||||
|     LANGUAGES = ( | ||||
|         ('de', gettext('German')), | ||||
|         ('en', gettext('English')), | ||||
|         ('de', _('German')), | ||||
|         ('en', _('English')), | ||||
|     ) | ||||
|  | ||||
| With this arrangement, ``django-admin.py makemessages`` will still find and | ||||
| mark these strings for translation, but the translation won't happen at | ||||
| runtime -- so you'll have to remember to wrap the languages in the *real* | ||||
| ``gettext()`` in any code that uses :setting:`LANGUAGES` at runtime. | ||||
|  | ||||
| .. setting:: LOCALE_PATHS | ||||
|  | ||||
| LOCALE_PATHS | ||||
|   | ||||
		Reference in New Issue
	
	Block a user