Drupal 5 introduced this very nice feature that .po files for translations can be put under modules /po directories which was improved in Drupal 6 to /translations directories and kept in Drupal 7. However, in the meantime, people got to use source control a lot more, localize.drupal.org became into existence externalizing translations from projects and merging two trees is not a good idea in any way anymore.

The plan instead is that as part of introducing l10n_update functionality in core, we remove the feature to import .po files from under all kinds of places in core from /translations directories and instead designate one place where we pull our files from.

Parent issue

#1191488: META: Integrate l10n_update functionality in core

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Sutharsan’s picture

Assigned: Unassigned » Sutharsan
Sutharsan’s picture

Disscussed at DrupalCon London with Gábor Hojtsy and luksak.

We should be able to handle the following scenario's:
* Distribution: Has pre-installed po files in sites/all/translations or custom director(y)(ies)
* Installation profile: The profile kicks off Drupal installation. See below.
* Install drupal: Some process loads from l.d.o (configurable) and writes po files in temp or sites/all/translations

Where local po files are available:
* Configurable via admin interface:
* * Temp directory (default)
* * Save in local directory. One directory only, defaults to 'sites/all/translations'.
* Via API: Additionally multiple directories via hook_..._alter()

Gábor Hojtsy’s picture

Yes, let's focus on local storage for now though, that should be simpler. Have you been able to get down coding on some of this?

Sutharsan’s picture

Yes, I have some code, but not finished yet. It was more than I first estimated and I collapsed after DrupalCon. But I will work on it by the end of the week.

podarok’s picture

subscribe

tstoeckler’s picture

Very interesting. When localize.drupal.org was first introduced I strongly disagreed with this whole approach, but I'm interested in what becomes of this. Subscribing for now.

Gábor Hojtsy’s picture

@tstoeckler: a big problem with the .po file location support in Drupal 6/7 core is that it mixes source trees, and many people don't understand this at all. Also if we want to make translation updates automated, we need a writable directory. We should not tell people to make every translation directory in their source tree writable. That is pretty cumbersome and can be dangerous for security too (Drupal would load module files from those directories for example). Therefore we basically need to unify on using one common directory for translations on a site for manual and automated handling usability as well. Both approaches benefit.

tstoeckler’s picture

That's absolutely correct, and the idea of a sites/all/translations intrigues me very much.
I haven't (yet) overcome my reservations, though, against lumping translations of all core modules, a lot of which will never be used, into one big .po file. That's not strictly related to this issue, but it is where we are currently headed, if I didn't miss anything. But again, I'm not here to complain, I'm just interested in where this is headed. And I'll voice concrete concerns, if any, when there is code to review.

Gábor Hojtsy’s picture

@tstoeckler: well, that has nothing to do with this particular issue. This is only about putting all .po files into one place. How does core know which one to import is a different question :) I think here we should just make it import everything found and consider it a job of a different feature to put only the needed stuff there. Then that issue will use .po files fed from localize.drupal.org and elsewhere as configured.

Gábor Hojtsy’s picture

@Sutharsan: I'd like to take this to the D8MI sprint next week (http://groups.drupal.org/node/158434), so if you have any code lingering that would help us jump-start on this task. Otherwise we might need to start from scratch. Thanks!

Gábor Hojtsy’s picture

Well, this did not end up landed in anyones' queue there unfortunately. Still looking for your progress. I'd like to avoid doing duplicate work, but this is a very important first step to enable many other things like moving the translation selection screen up front to the first page of the installer(!). See #1260716: Improve language onboarding user experience.

Gábor Hojtsy’s picture

Status: Active » Needs review
FileSize
151.63 KB
12.63 KB

Ok, since this was clearly dropped and we need progress on this to go on with implementing l10n_update integration and the usability changes for the installer in #1260716: Improve language onboarding user experience, I went ahead to propose a patch for this. Please review! Changes include:

1. Now you get one setting for a centralized translations directory. I chose to nest this under the public files directory since it needs to be writable and you might not have a private file directory. I've added the UI for this to the regular file system screen (but altered in by locale module).

CentralizePODirectory.png

2. The installer now looks for *install.$langcode.po files there to offer languages for selection. We don't have a standard for file naming of these and I'm fairly sure that install.$langcode.po is probably not going to be final, but we needed something interim. May not (need to) be solved in this patch anyway.

3. The import batches are reworked to look into this directory only. The language specific batches when languages are added import all translations from here filtered for a specific language only, the language independent batches just import all .po files. The eventual goal of this branch of the D8 initiative is to fill in this directory with only files relevant for your setup, so importing all of them is not a bad approach at all. We certainly don't have better for now, since we need update status integration to identify projects related and feed this directory with downloads, and that is way, way, way out of scope for this patch. So we need to accept this little lost feature here for a couple months, while we work out the rest and get back with a way cooler feature set.

4. I also took the liberty to rename the batch functions to make more sense. These will get renamed at a later stage when they become part of the "ui translation module" as planned currently in #1293304: Break up locale.module, but how?.

Reviews please!

Status: Needs review » Needs work
Issue tags: -D8MI

The last submitted patch, centralize-po-file-directory.patch, failed testing.

Gábor Hojtsy’s picture

Status: Needs work » Needs review

#12: centralize-po-file-directory.patch queued for re-testing.

Gábor Hojtsy’s picture

#12: centralize-po-file-directory.patch queued for re-testing.

Gábor Hojtsy’s picture

#12: centralize-po-file-directory.patch queued for re-testing.

Gábor Hojtsy’s picture

Issue tags: +D8MI

#12: centralize-po-file-directory.patch queued for re-testing.

good_man’s picture

Status: Needs review » Needs work

I put an Arabic translation file into `sites/default/files/translations/install.ar.po`

The installer detected it, but when setting up the database in installer (i.e. installing modules), an error occured:

An AJAX HTTP error occurred. HTTP Result Code: 200 Debugging information follows. Path: http://localhost/drupal_dev/install.php?profile=standard&locale=ar&id=1&... StatusText: OK ResponseText: Fatal error: Call to undefined function locale_batch_by_component() in /var/www/drupal_dev/modules/locale/locale.module on line 844

The problem is in local.module `locale_system_update` function:

function locale_system_update($components) {
  include_once drupal_get_path('module', 'locale') . '/locale.bulk.inc';
  if ($batch = locale_batch_by_component($components)) {
    batch_set($batch);
  }
}

And the patch deleted this function `locale_batch_by_component` already.

Another error is:

Error message
Notice: Undefined variable: components in locale_translate_batch_build() (line 210 of /var/www/drupal_dev/modules/locale/locale.bulk.inc).

$components var is not defined in that function.

Also, one small note:

+++ b/includes/install.core.inc
@@ -1128,7 +1128,8 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  $locale_translate_file_directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
+  $locales = file_scan_directory($locale_translate_file_directory, '/\.po$/', array('recurse' => FALSE));

Those lines appear three times, do we need them after installation? if so it's better to put them in function, if no, leave them as is.

tstoeckler’s picture

+++ b/includes/install.core.inc
@@ -1128,7 +1128,8 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
 function install_find_locales($profilename) {

We should get rid of the $profilename parameter, if we are already doing this. That will allow to put language selection first in the installer later on.

+++ b/includes/install.core.inc
@@ -1128,7 +1128,8 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  $locale_translate_file_directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');

And below: Bikeshedding, I know, but since the whole idea of splitting this into its own line is making this more readable, I think $file_directory should be fine.

+++ b/includes/install.core.inc
@@ -1128,7 +1128,8 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  $locales = file_scan_directory($locale_translate_file_directory, '/\.po$/', array('recurse' => FALSE));

+++ b/includes/install.inc
@@ -1103,10 +1103,11 @@ function st($string, array $args = array(), array $options = array()) {
+      $po_files = file_scan_directory($locale_translate_file_directory, '!install\.'. preg_quote($install_state['parameters']['locale'], '!') .'\.po$!', array('recurse' => FALSE));

Shouldn't these be identical, i.e. shouldn't we be looking for "install.[foo].po" files in install_find_locales too?

+++ b/modules/locale/locale.module
@@ -1105,3 +1105,23 @@ function locale_form_locale_language_overview_form_alter(&$form, &$form_state) {
+    '#description' => t('A local file system path where interface translation files will be stored and looked for. This directory must exist and may be writable by Drupal.'),

This sounds like the writability is optional (which it is (for now)). I think we should either 1. leave that out entirely 2. say it *must* be writable (which we will probably end up doing anyway) or 3. Explain why you would want to make it writable.

Overall this patch looks great. One thing that I thought about, was the fact that we use a single translations directory whereas we used to have multiple ones. A couple scenarios come to mind for which this would not be ideal:
- Custom install profiles, which are language-specific (e.g. site-specific install profiles) and to do not want to use l10n_server, but rather ship with their translations in profiles/$foo/translations (which they could before).
- Multisite installations, which have a module in sites/all must duplicate all of their translations for each site. That's not the end of the world, but I wonder if there is a way we could cater for this situation.
Of course we cannot make e.g. the profiles folder or whatever writable, but in theory we could use "sites/default/translations" for the imported ones and also import from "profiles/$profile/translations". And we could also support "sites/all/translations" in addition to "sites/default/translations". That would be of course a lot of added complexity. For now I think the proposed approach is definitely worth pursuing, and adding complexity at this stage would be wrong, but I just wanted to put that out there nonetheless.

good_man’s picture

Status: Needs work » Needs review
FileSize
13.39 KB

I've talked to Gabor about this patch, he'll review this one shortly.

Changes:
- Put a @todo on `function locale_system_update($components)` to discuss how can we get translations when new module\theme installed. We don't want to repeat the installer task of getting every $langcode.po file and import it, this will hurt performance. I think we need to rewrite `locale_batch_by_component` ?
- Removed the '#components' in batch array.
- Removed $profilename from `install_find_locales` per @tstoeckler review, as it's not needed.

+++ b/includes/install.core.inc
@@ -1128,7 +1128,8 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  $locale_translate_file_directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');

And below: Bikeshedding, I know, but since the whole idea of splitting this into its own line is making this more readable, I think $file_directory should be fine.

Long name, IMO, $translation_directory or $translation_dir is enough.

Shouldn't these be identical, i.e. shouldn't we be looking for "install.[foo].po" files in install_find_locales too?

Didn't quite understood what you want to change here?

tstoeckler’s picture

Status: Needs review » Needs work

re good_man:
Compare the call to file_scan_directory() in install_find_locales() and locale_translate_batch_import_files().
In install_find_locales() we look for files of the form "en.po" and in locale_translate_batch_import_files() we look for files of the form "install.en.po". I don't think that difference is intentional, but if it is, I would like to understand it. :)

tstoeckler’s picture

Status: Needs work » Needs review

Sorry, still needs review probably.

Status: Needs review » Needs work

The last submitted patch, centralize-po-file-directory_2.patch, failed testing.

Gábor Hojtsy’s picture

@good_man (#18 and #20):

1. Yes, locale_batch_by_component() and $components in general should go away *for now*. I have a @todo in the original patch to integrate with update_status. When a component (module/theme) is enabled/installed, we should identify the drupal.org project it belongs to which update status can do for us. Then we can look for the project specific file. Since we don't have that now and I don't think making up temporary vaporware file naming standards for a few weeks, while we build out the update status integration is a good idea (or is worth it even), it is not going to be there for now. Yes, that means all .po files will be imported when you enable a module, and files already imported before will be imported again. Yes. This is temporary while we work on that @todo, and is definitely going to be solved before D8 is released :)

2. On reusing the file_scan_directory() and variable_get() code in the installer, we can certainly do that there. We do use that however before locale module is enabled, so we cannot share that code with the rest of locale module, unless of course we add that code in bootstrap or some other common place, which sounds pretty wrong.

@tstoeckler (on points not discussed yet with @good_man):

3. Yes, the installer should use the same pattern at both places.

4. For custom install profiles and multisite installations, the translations directory is configurable especially for these cases. A custom install profile can come with a setting preconfigured to place the translation files at some directory of their choosing, and it does not need to be under a writable file directory if they don't want to support updating translations. If they do want to support updating translations via the soon to be built-in automatic update tool in core, they can just pre-fetch the translations and place it in the file directory and let Drupal overwrite and update them as fit. For multisites, multiple sites can share the same directory if they are configured to do so. The translation update code will download files there and sites will be able to import from there. The whole centralization of directories actually should make life much easier for multisites and distros, so they see at a glance all the translations available and can choose to rely on Drupal core fetching translations or them bundling them.

5. On writability, I agree we can remove the "may be writable by Drupal" for now, since we don't yet write to that directory. We will :) And that is the main reason I choose a dir under the files directory as default, so we don't need extra steps in the installer to mark yet another directory as writable. While it might sound like an ideal structure to put it somewhere like sites/all/translations or sites/default/translations instead of sites/all/files/translations or sites/default/files/translations, the extra steps needing to make that writable in the installer (possibly manually) just complicates the process. We are aiming to make this simpler here :)

Working on a slightly updated patch for further reviews!

Gábor Hojtsy’s picture

Status: Needs work » Needs review
FileSize
14.68 KB

Updated patch. Note that the tests will still not pass, since the failure is about testing the functionality we are just changing here :) We need to update the test to set the .po directory to some temp directory that will be cleaned out later by simpletest and put the .po file there and see if it gets imported. That is still todo, but reviews welcome in the meantime.

Gábor Hojtsy’s picture

Quick reroll for a little issue noted in the installer. $file[$key] to $files[$key].

Status: Needs review » Needs work
Issue tags: -D8MI

The last submitted patch, centralize-po-file-directory-26.patch, failed testing.

Gábor Hojtsy’s picture

Status: Needs work » Needs review
Gábor Hojtsy’s picture

Issue tags: +D8MI
tstoeckler’s picture

Status: Needs review » Needs work
+++ b/includes/install.core.inc
@@ -1125,21 +1125,30 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  foreach ($file as $key => $file) {

That won't work :)

+  array_unshift($files, (object) array('name' => 'en'));

Am I right, that this is temporary until #1266318: Make English a first class language lands?

tstoeckler’s picture

+++ b/modules/locale/locale.module
@@ -838,10 +838,15 @@ function locale_themes_enabled($themes) {
-  include_once drupal_get_path('module', 'locale') . '/locale.bulk.inc';

That shouldn't be removed, the function has been renamed but it is still in locale.bulk.inc

Also, there is something wrong with the creation of the batches. I don't get any notices/errors with the fixes above, and I can install everything fine, but once it starts importing the translations, there's no progress. Can't debug right now, hopefully will look at it later tonight.

-18 days to next Drupal core point release.

tstoeckler’s picture

Wow, posted too early, sorry. (also sorry for the noise in general)
After about 5min, the batch started (whyever), and the install worked fine. All the strings where correctly imported!!!
Awesome stuff!

Still needs work for the above. If I get to it later, I'll reroll.

Gábor Hojtsy’s picture

Please do reroll with the fixes! As for the English language shifted in, that is not going to be resolved in #1266318: Make English a first class language, no. It is basically about listing English even though it does not have a translation file there. We'll eventually display a list of all languages (that l.d.o supports) in the installer, and will still need to add English in as l.d.o will not have English listed either. It would probably make sense to add English to the predefined languages in standard.inc anyway, but that would not be useful here either, since an English .po file will not be there either. Hope this helps. Otherwise I agree with your feedback and looking forward to the reroll :)

Gábor Hojtsy’s picture

In fact, English is there even in D7 in the predefined list, so nothing to do there: http://api.drupal.org/api/drupal/includes--iso.inc/function/_locale_get_...

tstoeckler’s picture

Status: Needs work » Needs review
FileSize
14.73 KB

Ahh, that totally makes sense about always adding English. D'uh!
I added a little comment about that.

Here's a reroll, which let me install successfully on my system. Please try this out and see if for you the installation also takes forever (as in ~5min vs. 10sec before), especially the "Importing translations" part. I'm pretty sure that had something to do with my setup, but it would be good to make sure.

rfay’s picture

Status: Needs review » Needs work

This patch seems to destroy the testbot every time.

Does it use more than its share of database space? Is it doing something unusual?

It would help me if this gets set to needs review only when letting me or jthorson know. I've been having to clean up all the testbots every time after this one goes.

tstoeckler’s picture

@rfay: Oh, I hadn't realized that sorry.
The patch changes a bunch of stuff in install.core.inc, but the installer itself (i.e. the HTML on install.php) is not changed. Maybe in fact the long delay I was seeing, is something inherent with the patch and is causing the testbots to timeout?

rfay’s picture

What's happening is that this patch (and previous ones) use up the limited RAM-based database space worse than any other patch ever has. And it brings down mysqld, taking the testbot offline (or resulting in the bogus "0 tests passed" pass)

Gábor Hojtsy’s picture

Status: Needs work » Needs review
FileSize
13.39 KB

@rfay: you know that sounds pretty interesting, because the patch above in #20 failed with two very concrete fails, that should actually happen with these patches. And it had very little difference to any of the above or below patches. Let's try retesting that then if its an issue with these patches. It should not be an issue with that patch right?

Status: Needs review » Needs work

The last submitted patch, centralize-po-file-directory_2 (1).patch, failed testing.

Gábor Hojtsy’s picture

Status: Needs work » Needs review
FileSize
13.37 KB

Ha, file naming problem?

Status: Needs review » Needs work
Gábor Hojtsy’s picture

All, right now what's the difference between these patches that makes the test system choke? Is it the batch set when modules are enabled that is not in the patch that does not fubar the bot?

Gábor Hojtsy’s picture

All right, here is a reroll of our current working patch in #35 (which did apply to my Drupal checkout with slight offsets, so not sure what does the testbot complain about). Anyway, let's see what does that do.

Gábor Hojtsy’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, centralize-po-file-directory-44.patch, failed testing.

Gábor Hojtsy’s picture

@rfay: looks like the patch that was said to bork the testbot did not bork it after all.

rfay’s picture

Well, I'm glad. But I had to fix many broken testbots (like 5 yesterday) that all tested this issue as the last thing they did in life :-)

Gábor Hojtsy’s picture

Oh, sorry for that. Well, it seems to be testing "well" now that is it produces the 2 expected fails. We need to redo that test to set the dir for the .po file to make it work again and that should fix this for good. Maybe even put the .po file elsewhere to make sure that the assumptions are properly communicated that it does not need to be a directory under a module anymore. @tstockler: can you take a stab at that?

tstoeckler’s picture

Few things are more motivating than a personal request by Drupal hero. :)

Here's an updated patch. For some reason, the tests never complete on my system. That's why I'm not setting this to "needs review", in order to save @rfay some hair-pulling. It would be awesome if someone could try this out locally.

While I was waiting for the tests to complete (in vain...), I actually tried this manually. I downloaded admin_menu (which has a 8.x release), and manually downloaded translations to /files/translations from localize.drupal.org. And.... *drumroll* ...it works! Enabled the module, and the file was imported. Pretty cool stuff. :)

rfay’s picture

Status: Needs work » Needs review

Well let's try it anyway. It didn't fail yesterday. I'll be out this evening, but will try to look at it when I get back and see if we have just lots of broken testbots :-)

rfay’s picture

And the testbot did fine.

At least we've learned from this what some of those "0 tests passed" things mean. It seems to mean that mysqld croaked.

Gábor Hojtsy’s picture

Status: Needs review » Needs work

@tstoeckler: thanks for working on this patch! A quick review:

- minor: locale_translate_batch_import_files() would be great to use the $directory variable name as well for simplicity like the installer counterpart
- major: I don't get how the variable_set() in the test works; we supposedly do not recurse to subdirectories but the variable_set() sets the module directory, while the .po file is in the translations subdirectory. It should not import stuff from there, should it? also I think for making a statement that this should not be confined to "translations" directories under anymore, IMHO we should just move the .po file to the tests directory itself and import it from there.

Can you update this patch for these two remaining issues? IMHO it looks good otherwise.

tstoeckler’s picture

Re minor: Sure will do that.

Re major: The patch actually moves the .po file from the translations directory into the module directory of the test module (which is identical to the tests directory of locale.module), which is what the variable is set to (thanks to Git renames are not as visible as they used to be... :)). So that should be fine, actually, I think.

tstoeckler’s picture

Status: Needs work » Needs review
FileSize
16.74 KB

I simply edited the patch file, let's see if I get away with it... :)

One question, that came up when rolling this, but I forgot to post last time:
Since we set a variable in the test, should we unset/delete that variable in a tearDown() for encapsulation's sake? Wasn't really sure about that.

Gábor Hojtsy’s picture

Ah, ok, missed that file rename in the patch :) Thanks! In terms of teardown, you don't "unconfigure" your languages either at the end of the test. It should not affect other tests.

Status: Needs review » Needs work

The last submitted patch, centralize-po-file-directory-55.patch, failed testing.

Gábor Hojtsy’s picture

You forgot to update the second directory variable in locale_translate_batch_import_files().

tstoeckler’s picture

Status: Needs work » Needs review
FileSize
16.72 KB

@brain #fail...

Let's try this one.

Gábor Hojtsy’s picture

Status: Needs review » Reviewed & tested by the community

All right, I think this looks great! Thanks for working on this.

catch’s picture

Status: Reviewed & tested by the community » Needs work
+++ b/includes/install.core.incundefined
@@ -1125,21 +1125,31 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+  // English does not need a translation file.
+  array_unshift($files, (object) array('name' => 'en'));

Is this still valid when English becomes a first class language? If not is that going to be fixed in the other patch once this is in?

+++ b/includes/install.core.incundefined
@@ -1125,21 +1125,31 @@ function install_select_profile_form($form, &$form_state, $profile_files) {
+ * Find installer translation files either for a specific langcode or generally.

s/generally/all available languages ?

+++ b/includes/install.core.incundefined
@@ -1480,23 +1488,21 @@ function install_configure_form($form, &$form_state, &$install_state) {
+ * @todo
+ *   This currently does the same as the first import step. Need to revisit

Any chance of an issue number here?

+++ b/includes/install.incundefined
@@ -1103,14 +1103,14 @@ function st($string, array $args = array(), array $options = array()) {
+      if (count($locale_files)) {

No need to use count() if we only need to check !empty().

+++ b/modules/locale/locale.bulk.incundefined
@@ -163,97 +163,41 @@ function locale_translate_export_po_form_submit($form, &$form_state) {
+ * Prepare a batch to run to import all translations.

This doesn't read right to me "a batch to run to import" - can we simplify?

-24 days to next Drupal core point release.

Gábor Hojtsy’s picture

Ha! Here are my responses:

1. Yes, we'll need to unshift English on the list, since we will not ship an English translation per say. People will be able to customize English for their liking but we will not ship a customized English language.

2. Agreed.

3. We don't have an issue for that yet, since there are a string of dependencies to resolve there. The master meta issue for that is #1191488: META: Integrate l10n_update functionality in core if that is helpful to link in. Basically it is going to be one of the last steps for that meta issue to integrate l10n_update to finally be able to use it here. We need to decouple the gettext API first, add .po file and individual string tracking to interface translation, abstract the update status module components we need to a level we can reuse and THEN we can build the automated file download / import tool with the needed features. Currently l10n_update duplicates most of that code due to lack of flexibility. So its still some ways off, but its being worked on. Two big pieces that are currently being worked on for that are #1189184: OOP & PSR-0-ify gettext .po file parsing and generation and #361597: CRUD API for locale source and locale target strings.

4. Ok. Let's do !empty() then.

5. We can remove "to run" from the text IMHO, still means the same then and easier to read.

@tstoeckler: can you help move this forward? Thanks!

tstoeckler’s picture

Assigned: Sutharsan » tstoeckler

Will do. Assigning to me for now, so I (hopefully) don't forget.

Gábor Hojtsy’s picture

Trying to get this moving to enable the installer work. Rerolled the patch with fixes for the comments as requested by @catch above and due to to a one-line conflict in applying the patch to the current codebase. @tstoeckler: I hope this is not stepping in your toe but rather helping you out :)

Gábor Hojtsy’s picture

Status: Needs work » Needs review
Gábor Hojtsy’s picture

Status: Needs review » Reviewed & tested by the community

Very minor changes, so back to RTBC.

catch’s picture

Status: Reviewed & tested by the community » Fixed

Patch looks good to me now.

Committed/pushed to 8.x, thanks!

tstoeckler’s picture

Assigned: tstoeckler » Unassigned

My toes are quite alright, thanks for finishing this up. :)
Sorry, I didn't come around to getting this done myself. Great to see it in, though. I hope I'll be able to redeem myself in one of the follow-ups. :)

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

David_Rothstein’s picture

2. The installer now looks for *install.$langcode.po files there to offer languages for selection. We don't have a standard for file naming of these and I'm fairly sure that install.$langcode.po is probably not going to be final, but we needed something interim.

Is there a followup issue for this somewhere?

I tried to install Drupal 8 using a non-English language today, and it didn't work at all. The on-screen instructions say nothing about files needing to follow that install.$langcode.po pattern; they just direct me to localize.drupal.org, where the files I can download don't match that pattern and therefore aren't recognized by the installer.

It seems like we need a critical bug tracking this issue to make sure it gets resolved one way or another?

David_Rothstein’s picture

Created #1392208: Impossible to install Drupal in a non-English language when following the provided instructions as the followup. Someone can close it if it turns out to be a duplicate.

Gábor Hojtsy’s picture

Issue tags: +language-ui

Adding UI language translation tag.