Problem/Motivation
The installer was recently fixed in #2113955: Rely on proper server side version fallback for translations to support a more seamless translation fallback system implemented on the server side (where all the info on versions is available). However, locale module still uses some local data to try to find translations when a concrete version is not available and therefore is not consistent with the installer behavior. It also results in a confusing dependency between update and locale modules. You only have up to date data in localization update if update module is enabled, but the dependency is not officially enforced due to locale being one module doing many other things.
Proposed resolution
Just be consistent with the installer and use the same server side version fallback scheme. This also removes the update module dependency and makes checking for translation updates faster.
Remaining tasks
None.
User interface changes
Minor. The y.x translations are now looked for when dev versions are encountered (instead of older translations). If there was an older translation, the y.x file should be available as well. This is apparent on the UI:
API changes
None.
Related Issues
Comment | File | Size | Author |
---|---|---|---|
#114 | interdiff.txt | 646 bytes | Gábor Hojtsy |
#114 | 1832946-114.patch | 24.13 KB | Gábor Hojtsy |
#108 | interdiff.txt | 2.16 KB | Wim Leers |
#108 | locale-update-1832946-108.patch | 23.5 KB | Wim Leers |
#96 | d8-locale-translation-updates.png | 70.97 KB | Jose Reyero |
Comments
Comment #2
Jose Reyero CreditAttribution: Jose Reyero commentedproject_api-xxxx-01.patch queued for re-testing.
Comment #4
Jose Reyero CreditAttribution: Jose Reyero commentedproject_api-xxxx-01.patch queued for re-testing.
Comment #5
Sutharsan CreditAttribution: Sutharsan commentedRe-rolled the patch.
Added a project definition to locale_test_translate module. Strange, how tests ever passed without it.
Comment #7
Sutharsan CreditAttribution: Sutharsan commentedBot fails on Updgrade Path test, but test passes locally. Although with an exception, but it is the same exception as when the test runs on 8.x without the patch). I'll give the bot one more spin.
Comment #8
Sutharsan CreditAttribution: Sutharsan commented#5: project_api-1832946-05.patch queued for re-testing.
Comment #9
Sutharsan CreditAttribution: Sutharsan commentedThe patch make some changes to .info file properties:
Some examples from the patch:
IMHO 'project translation server pattern' is not a significant improvement compared to the old 'interface translation server pattern'. Especially now locale module is named 'Interface translation'. If we make any change, I suggest 'interface translation url' as it is an url, and replacement patterns are not required.
Comment #10
Sutharsan CreditAttribution: Sutharsan commentedI like to use this API as a starting point to create project objects. Project objects can be used to objectify the interface translation code as in #1842380: Convert $source object to a TranslatableProject class. But I'm struggling with the right way to instantiate the project objects. I don't have experience in this field and I can't find proper examples. Below is a scetch of my ideas how to do it.
Examples in code:
Comment #11
Sutharsan CreditAttribution: Sutharsan commentedThis is working code to replace
update_process_info_list()
(orproject_process_info_list()
if you wish). I like to have comments on the objectification of the code. Pointer to good examples are appreciated too. A know omission is a missing ProjectInterface class, but that should be easy to extract. Also like to have comment on the above usage of this ProjectFactory class. The implemententation is slightly changed as you can see below.The two debug calls give the same data.
Comment #12
dwwThanks for moving this forward, this is probably a good idea so we can share more code between update manager and other parts of core. I don't have time to do a thorough review, but this is now on my radar and I hope to look more closely Soon(tm).
However, do we really want this to consume the "project" namespace? That's not going to be any fun at all for the project module, which is kinda important for d.o and our community. :( I guess in the past the attitude has been "if core wants a namespace, contrib be damned", so perhaps we're just going to have to somehow deal with this in D8 and rename that module (or something). But holy crap, that's going to be a HUGE amount of work, and perhaps core could save us the trouble of basically rewriting the whole thing (again) by using some other namespace for this...
Thanks,
-Derek
Comment #13
Jose Reyero CreditAttribution: Jose Reyero commentedSome thoughts:
- We need to develop the concept of 'project' first with an API as simple as possible. Factories, etc just add complexity, don't add anything at this point.
- Though a Project class may be something to aim at, that should start with component classes (Module, Theme) etc or otherwise we end up with a class that is still a huge array of arrays.
IMO, what we need to focus on here is some project_list() that can provide a list to be reused by both update and locale, and not running with different lists, that you need to cache independently, for each, and then rebuild all of them after we rebuild the list of modules or themes.
In order to give projects some proper entity (I mean existence, not Drupal Entity) and information, maybe we should consider too getting them their own info file, for what we need some namespace that doesn't overlap with module.info. Thinking of this I would propose something like
[projectname].project.info
That should contain all the project-specific data like name, version, update server for the modules in that project, etc...
The major issue atm is compiling the list of projects form the list of modules is really a 'dirty' (as not well defined) process and some important waste (duplicated info for modules in a project, name clashes, etc, etc..).
@dww,
How does [projectname].project.info as a unique file per project sounds for the drupal.org packager?
About namespaces, I don't think we want to take over project_* namespace. We could very well use system_project_* or component_project_*. Maybe a component.api (that can be used for modules, themes, projects would make more sense.)
Comment #14
clemens.tolboomI agree with @Jose Reyero to make Project as simple as possible. But by adding classes for Modules and Themes would make this a Drupal 9 issue. But we should add those eventually.
By adding a [projectname].project.info we can speed things up.
As we are adding an API we should add a class for Project like \Drupal\Core\Project so there is no namespace problem with the Project project. We do have \Drupal\Core\SystemListingInfo.php so I'm a little confused as that comes close to our needs.
In discussing with @Sutharsan I proposed composition design pattern for update / locale like
My 2cents
Comment #15
Sutharsan CreditAttribution: Sutharsan commentedUpdate module and Locale module have different needs for project data. Where Locale only requires as list of projects with name and release version, Update module needs more details such as sub-modules(/themes) project time stamp, package, etc. IMHO class inheretance/override is the ideal for this differentiation. The attached patch tries to combine this with a minimum added complexity. A Project class holds the project data and a ProjectBuilder class contains the logic to process the module and theme data and build a project object. Locale and Update have their own inherited builder class to differentiate. LocaleProjectBuilder filters only the required data, UpdateProjectBuilder does some additional data processing on top of the ProjectBuilder results.
I have the following OO related questions:
Some more notes on the code: I changed the project parsing code in ProjectBuilder as little as possible. Its complexity holds me back, but I would rather break it up to make the base project class more lean and move the Update module specific stuff into the UpdateProjectBuilder. In other words, more differentiation between Locale and Update project data. The UpdateProject is not used, but I left it there for now to show the kind of data Update modules calculates. I did not want to modify the Update module code which uses the $project array and convert it into a
$project
object. As a temporary solution I introduced agetAllProjectsAsArray()
method to the UpdateProjectBuilder which is now used by Update module to retrieve the project data.I like the idea to add a *.project.info file to each project. If it includes the data we need to build projects (including a list of sub modules/themes), it would make the project building process much easier.
I don't agree with @Jose Reyero on this. A project is a container of components, where the only (required) relation between them is that the project must know the names of the included components. Ideally these are not names, but component objects. Currently only Update module has the requirement for this data and I have the impression that this data only required for displaying a list of included modules/themes in the interface. I don't want to postpone the introduction of project objects until Component objects are introduces. I need the project objects to start with improvements on automatic translation import.
@ClemensTolboom, I don't want to jump into TranslationProject yet. Getting the base Project class right is difficult as it is ;) But thanks for your cents.
Comment #16
Sutharsan CreditAttribution: Sutharsan commentedComment #18
Jose Reyero CreditAttribution: Jose Reyero commentedThis is where I start not liking this patch because id does away with the concept of 'project' list api.
I think a project is a project independently of which other part of Drupal uses it so if we cannot have a single list and a single object for both locale and update I don't see the purpose of this issue anymore.
Ok to Project class, though, just don't make it too complex.
Comment #19
katbailey CreditAttribution: katbailey commentedI promised some feedback on this patch, but first a disclaimer: I have nfi about the inner workings of either locale module or update module :-P This feedback is just about the class design.
Also, I think it might be a good idea to get chx to look at this, because he has done a lot of work around module/theme discovery and has further plans in that area I believe. It would be a shame if there were efforts being duplicated.
Here are my comments on the classes...
Project class:
It looks like most of these properties can get set on instantiation. Use setters for the rest instead of having public properties.
ProjectBuilder class:
We generally want to avoid calling out to procedural functions within our classes - and seeing as we are always going to need this information, why not pass it as a parameter to the constructor?
A nicer way of dealing with this might be to use a ProjectFactory, which could also be passed in the constructor of the ProjectBuilder, so then you would do something like...
Looking at this calling code to see how the ProjectBuilder class gets used, and taking the above comments into account, I think what you want to end up with is calling code that looks like this:
... assuming it never makes sense to have a ProjectBuilder object that has not parsed the data, i.e. so you would just call the parse() method in the constructor and be done (the parseModules() and parseThemes() methods would then be unnecessary.)
I hope this helps!
Comment #20
Sutharsan CreditAttribution: Sutharsan commented@katbailey, thanks for your review. Regarding public properties, I see a number of classes using public properties such as file, node and (other) entities. I guess this is for backwards compatibility only, or am I missing something? Also I have not found any rules or coding standard for this in Drupal yet.
Comment #21
katbailey CreditAttribution: katbailey commentedThis is just bog standard encapsulation. Is there a reason you think those properties should be public or that they can't be set in the constructor?
Comment #22
Sutharsan CreditAttribution: Sutharsan commentedI used public properties because this required the least amount of changes when re-using existing code ($project['foo'] changed to $project->foo) and I found public properties used in various places in core. I'm not defending my code, I will rework it without hesitation to comply with best practice, but I'm searching for the right and the proper (and all the exceptions to that ;) ) and trying to understand it all.
Comment #23
katbailey CreditAttribution: katbailey commentedI don't think there's any need to be overly tentative about the extent of the changes you'll be making here. We are embracing OOP in D8 and this has already entailed enormous changes to the way we write code for Drupal. One huge advantage to embracing a very commonly used set of design principles is that we don't have to maintain coding standards documentation about things like the question of public/protected/private properties - we can just follow general OOP best practices. We *want* Drupal to not be special in this regard.
The only reason I can think that you might want to use public properties would be as a micro-optimization, i.e. to avoid the method call, as discussed here: http://stackoverflow.com/questions/6215398/calling-the-variable-property...
But in this particular case, as I said the majority of those properties look like they can be set on instantiation and will not be changed again. And even if they did need to be set again, using setters is still the best practice - the kind of micro-optimization mentioned above is definitely not the norm.
Comment #24
Sutharsan CreditAttribution: Sutharsan commentedPossibly related: #1833592: [META] The road out of module build circular dependency hell I checked with chx, this is the issue where the work for 'module/theme discovery' is going on. See katbailey's remark in #19.
Comment #25
Sutharsan CreditAttribution: Sutharsan commentedThis patch now uses project classes as katbailey suggested:
@katbailey, I would appreciate your review on the above.
Some observations on the system_project_list() as a single source of project data.
system_project_list()
is now the only project list source. This is now back as how it was in the initial patch by Jose Reyero.system_project_list()
return an array of objects. This however has some consequenses:update_process_project_info()
,update_calculate_project_data()
and update_calculate_project_update_status() add some 14 more parameters to the (current) project array. If we modify the update module to use a project object instead of an array, these 14 parameters must be added to the Project class or the parameters must be added to an UpdateProject class which extends the Project class.system_project_list()
makes a list of all projects both enabled and disabled and it caches the result. Disable projects are filtered out inupdate_process_project_info()
. This however results in the update page to show both enabled and disabled modules included in for example Drupal Core. Since both Update and Locale module use their own 'show/hide the disabled project' setting, changing this back to the original behaviour will lead to removing the cache fromsystem_project_list()
and using individual caches in Update and Locale. Any other ideas?@Jose Reyero, I understand your desire for a single list to be used by both Update and Locale. But IMO the arguments for separate data, are growing in number. I'm trying to make this patch according to your single source idea, but I am running out of ideas to combine it in a decent way with one single project object.
Comment #27
Gábor HojtsyI think this would be an API refactoring, not a feature. Marking as such. @katbailey: thank you help review the recent updates? Sounds like we are on the right path.
Comment #28
podarokagree with #27 - this is task!
Comment #29
katbailey CreditAttribution: katbailey commentedSorry for taking so long to look at this again. This is looking much better. Regarding the questions above, yes we need a ProjectInterface and a ProjectFactoryInterface. Then the advantage of passing in an actual factory rather than a string representing a fully-qualified class name for a Project class is that we get much better error handling, i.e. if you pass in anything other than an object implementing the ProjectFactoryInterface it will blow up with a nice helpful message.
Below are just some minor points about method names.
I'd call this getHumanName() as then it's clearer why you're not just returning $this->name.
This should be addProject() as you're not setting the $project property but adding to the $projects property.
Edit: I thought dreditor had lost my changes initially, but it hadn't - removing the duplication.
Comment #30
Sutharsan CreditAttribution: Sutharsan commented@katbailey, thanks for the review. I've been offline for D8 work for a while. But I hope to get back to this issue shortly.
Comment #31
vijaycs85Stright re-roll of #25
Comment #33
YesCT CreditAttribution: YesCT commentedI took a look at
core/modules/update/update.compare.inc
http://drupalcode.org/project/drupal.git/blame/HEAD:/core/modules/update...
and git blame --since="January 30, 2013" core/modules/update/update.compare.inc
fea7acc2
#1547008: Replace Update's cache system with the (expirable) key value store
http://drupalcode.org/project/drupal.git/blobdiff/980cb9c54851e7d279e0cc...
6bf13bd8
#1793074: Convert .info files to YAML
http://drupalcode.org/project/drupal.git/blobdiff/13bd2b25ec747e83417288...
59bd679e
#986888: Undefined index warning in "Available Updates List" with hidden=TRUE base themes
http://drupalcode.org/project/drupal.git/blobdiff/ccb9c924b0f5b69eb73e83...
Comment #34
Sutharsan CreditAttribution: Sutharsan commentedThe syntax error was due to a missing closure parenthesis in update_get_projects(). Also fixed an error with the use path of LocaleProjectBuilder.
Patch follows
Comment #35
Sutharsan CreditAttribution: Sutharsan commentedFor evaluation: interdiff-1832946-31-34-no-white-space.txt
For git apply: interdiff-1832946-31-34.txt
Needs more work to process katbailey's comments, but first I want to agree with Jose on the direction.
Comment #36
Sutharsan CreditAttribution: Sutharsan commentedComment #37
aturetta CreditAttribution: aturetta commentedTrigger testing for the latest patches...
Comment #39
Gábor HojtsyWe have been discussing this with Sutharsan, and there are more important things to work on now and this did not get the kind of interest we hoped from outside our little bubble, so marking this postponed.
Comment #40
BerdirThat's unfortunate as I had to look at the locale "file" handling stuff and it made my head hurt, but we'll have to live with that I guess ;)
Comment #41
Gábor HojtsyI think we all agree this is a great cleanup effort. In the meantime, we did not manage to sign up a reasonable amount of people for this to work on it and we have important things to work on unfortunately. This one being pretty important right now: #1998056: Automatically update interface translations using cron.
Comment #42
Sutharsan CreditAttribution: Sutharsan commentedSetting back to sprint and active for focus to get this in before the code freeze.
Comment #43
Sutharsan CreditAttribution: Sutharsan commentedI've discussed yesterday with Jose to revive this feature. We will go back to the root of the issue and create a simple API with minimal changes and aimed at removing the dependency of Locale upon Update module. Re-roll of the original issue will be the first step.
Comment #44
Sutharsan CreditAttribution: Sutharsan commentedRe-roll of patch in #5.
Comment #46
plachTagging for the rocketship.
Comment #47
Gábor HojtsyFix tags.
Comment #48
Gábor HojtsyThis looks like a massive API change. I believe we did the moving of functions around already. Is there anything else left here to do?
Comment #49
Gábor Hojtsy@Sutharsan: are you still working on this? Is this still needed? What kind of API changes are needed?
Comment #50
webchickThe issue summary could really use an update that explains what the API changes introduced in this patch are in order to expedite approval.
Comment #51
xjmAn explicit list would be especially helpful, e.g.: https://drupal.org/node/2056513#summary-api-changes
Comment #53
Sutharsan CreditAttribution: Sutharsan commentedI received your comments, but I may need a few days to find the time to write something about the status of this issue.
Comment #54
jair CreditAttribution: jair commentedNeeds Reroll
Comment #55
Jose Reyero CreditAttribution: Jose Reyero commentedRerolled against latest HEAD.
Comment #56.0
(not verified) CreditAttribution: commentedUpdated issue summary
Comment #57
Sutharsan CreditAttribution: Sutharsan commentedI've updated the API summary.
The below functions in #55 are no longer needed as their functionality is now included in
\Drupal\Core\Utility\ProjectInfo
. This patch removes them.Comment #58
Gábor Hojtsy@dww was concerned in #12 for core taking on some of the project_* namespace. From the issue summary, this looks like still being the case? This should be reviewed with a core maintainer for API change approval before substantial further work is put into it.
Comment #59
dwwYup, still concerned, but don't have the time/energy to follow closely or keep fighting. Thanks for bringing that back up!
Comment #59.0
dwwUpdated API changes
Comment #60
sunI agree that we badly need to clean up this code. Like @Berdir, I also had a very hard time in debugging test failures in the current project-related
Locale
code.When proceeding here, it would be a good idea to move the generic parts out of
Utility
and intoDrupal\Core\Extension\Project\*
instead (or perhaps evenDrupal\Core\Project
), since this entire code heavily depends on the extension system, so various services should be injected.Comment #61
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedI've just bumped into this one once again with latest beta13. Any chance we can get this thread back to life?
I'd say this is a huge usability issue. That a module silently depends on another one is so ugly...
There's only this API documentation about the issue and it is still confusing for me:
"For full functionality this function depends on Update module. When Update module is enabled the project data will contain the most recent module status; both in enabled status as in version. When Update module is disabled this function will return the last known module state. The status will only be updated once Update module is enabled."
From https://api.drupal.org/api/drupal/core%21modules%21locale%21locale.trans...
Comment #62
Gábor HojtsyIt may be possible if it does not involve API changes or API changes are needed due to major or critical bugs. #2501035: Without "Update Manager" module enabled, "Available translation updates" does not get updated, should be documented is a related UI issue.
Comment #63
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commented@Gábor,
Or in other words, it won't be possible... :-)
Ok, then let's focus on adding some warning in the UI, that related issue you mention.
I'm recategorizing this one for 9.x.
Comment #64
Gábor HojtsyNote that when I wrote that I was going by https://www.drupal.org/contribute/core/beta-changes which is the policy. Sounds like this may or may not be argued under the "reduced fragility" umbrella even in D8 but ideally should be discussed with core committers first.
Comment #65
penyaskitoAPI additions are allowed at 8.x.y. Do we really need to change underlying APIs? Couldn't we keep those as wrappers and deprecate them?
Comment #66
webchickRight, moving back to 8.0.x unless it's shown that there's no way to do this in a BC way. (And possibly even then; needs a beta evaluation.)
Comment #67
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedLuckily I've been working on this for some client's project, I've been looking into the API again, and running some tests. Some notes about this:
- We already have something similar to this API, as we have some tools that locale can be using without update, namely Drupal\Core\Utility\ProjectInfo
- Running locale module's translation updates without Update Manager is perfectly possible. The only issue is we won't get translations for installed development versions of modules, and may not get translations right away for newly released modules / core versions. What Update Manager does is getting the last tagged version for a module that we may have installed as -dev version. (Dev versions won't have translations available so we need to fall back to the last tagged version for that module).
- The current status is Locale module has some explicit check for update module and if it's not enabled, it just won't return any project information at all, then the "Available translation updates" page though still there, won't display any information.
So while it could be possible and easy to provide some partial project translation information and download it without update manager, I am not sure it is worth the trouble, as end users will get more or less available project translations depending on whether Update Mgr is enabled or not, and this may be difficult to communicate -see the second note.
IMO an 'all or nothing' (with update/without update) option is way easier to understand than 'you only get updates for some projects beacause of this and that...'. Then the only thing worth fixing is the UI / Usability issue of not getting any update / not knowhing why, which is being addressed in #2501035: Without "Update Manager" module enabled, "Available translation updates" does not get updated, should be documented
In summary I think we can close this thread as "won't fix"... Well, we could argue whether it's fixed or not because we do have some API, only it never gets used by locale without update manager enabled and also they use different wrappers to get the project list.. but that won't make any difference..
Comment #68
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedIt was not much trouble, working code was already available in Localization Update module. I've created a patch at #2550137: Improve interface translation fallback if Update module is disabled
Generally I agree, but when I saw the practical implication in #2501035: Without "Update Manager" module enabled, "Available translation updates" does not get updated, should be documented. That we are going to tell the user that a status page is not available...
I have no opinion on the direction of this issue (yet).
Comment #69
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedThere has been some interesting development on the localization server that allows us to run translation updates entirely without depending on Update manager, see https://www.drupal.org/node/2501035#comment-10327233
I'm giving this issue one more try, I hope a patch will follow soon.
Comment #70
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commented@Gábor,
Just got started with the patch, but the issue I'm facing is that there are no translations at all for modules without tagged releases, which are almost all of d8 contrib atm.
Also, which would be the right URLs to check for so they get redirected to the fallback? From current system, once we don't filter out dev releases I get URLs like these:
http://ftp.drupal.org/files/translations/7.x/devel/devel-7.x-1.x-dev.es.po
http://ftp.drupal.org/files/translations/8.x/mollom/mollom-8.x-1.0-alpha...
(This one, Mollom, at least has some tagged releases, just I don't know how to build the right URL form the dev version)
Comment #71
Gábor Hojtsy#2113957: Build server side version fallback system for translations has some examples, eg /files/translations/6.x/gallerix/gallerix-6.x-1.x.ja.po
Comment #72
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedThis patch:
- Removes dependencies on update manager.
- Uses new server URLs (with server side fallback) for dev|alpha|beta versions of modules
Comment #75
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedMerged the solution from #2550137-5: Improve interface translation fallback if Update module is disabled. Making the regex less specific and adding a check for '-dev' in the issue string for performance.
Patch needs cleanup and tests. Not changing the status yet.
Comment #76
Gábor HojtsyLooks cool on a short review :)
Comment #77
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedNext iteration:
locale_translation_build_projects()
in the above test classTodo: Add a new assertion. See the @todo in the patch.
Probably all the test that now fail, fail because
locale_translation_build_projects()
does return data when Update module is disabled. So test must be adapted to this new, desired, behavior.Comment #78
Gábor HojtsyBring on D8MI sprint for tracking :) Thanks for working on this.
Comment #81
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedComment #82
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedGot the tests working, by adding locale_test module to language related tests. The module prevents core from being translated when for example a language is added. Lets see if the bot agrees.
Comment #84
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedComment #85
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedNext iteration ...
Comment #86
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedComment #94
Sutharsan CreditAttribution: Sutharsan as a volunteer commentedLast patch tested Ok :)
Comment #96
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedThe patch seems to work but it doesn't apply cleanly anymore, it needs a re-roll, will post it in a minute.
Attaching screenshot, we can see it finds the right translations (it also works when clicking on Update).
Comment #97
Jose Reyero CreditAttribution: Jose Reyero as a volunteer commentedFinally it doesn't need a re-roll, my mistake, wrong branch I guess.
So, this works, it looks good to me, moving to RTBC.
Comment #98
Gábor HojtsyUpdated issue title and summary significantly.
Comment #101
Gábor HojtsyComment #103
plachAnnoying bot
Comment #107
Gábor HojtsyLooks like legitimate needs work now.
Test fails due to no FormattableString.
No newline.
Comment #108
Wim LeersFixed both points in #107, which are trivial changes, so back to RTBC.
Comment #114
Gábor HojtsyThe language switching test is again a victim of the language adding leading to translation problem.
Comment #115
Wim LeersI don't understand how adding the
locale_test
module fixes the problem?Comment #116
Gábor Hojtsy@wimleers See #82.
There is also the import_enabled killswitch in locale.settings (testing profile ships with its own locale.settings to kill automated imports) but that does not seem to play nice with the config system when we actually enable locale in the testing environment. (Note that this problem did not pop up before because the code that identified the projects to deal with was dependent on update module, and this patch obviously removes that dependency, so it starts downloading translations where locale is enabled but update is not, but that is a good thing mostly, except some tests :).
Comment #118
Wim LeersThanks!
RTBC if green.
Comment #119
Gábor HojtsyComment #120
Gábor HojtsyComment #121
Gábor HojtsyComment #123
effulgentsia CreditAttribution: effulgentsia at Acquia commentedPushed to 8.0.x.
Comment #125
webchickGrumble.
Comment #126
Gábor HojtsyYay, thanks all!