-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable filtering of non-enabled i18n language files from being loaded… #160
Conversation
… into triple store Define name of available language listing file (found in Vitro-languages) Update RDFFilesLoader method interfaces to include ServletContext Part of resolution to: https://jira.lyrasis.org/browse/VIVO-1836
I'm having trouble understanding why we need to track the available locales in available-langs.properties. Can't we just load the files that have an enabled locale suffix in runtime.properties and ignore the others without tracking everything that's available? If the runtime.properties includes an invalid language VIVO throws a warning to the user already. |
Do you need to know the locale suffixes to make sure we don't unintentionally omit extra (non-18n) files? If so, couldn't we use the locale suffix list in Java's getAvailableLocales() method and remove all files with those suffixes minus enabled languages? |
I share that concern and made a similar comment on the other pull request: vivo-project/Vitro-languages#18 . I can appreciate now that there are practical problems with the kind of alternative I proposed due to the (silly, imo) lack of convention for naming properties files. On the other hand, the problem with only loading files that terminate in an accepted locale string is that any given RDF directory can include files that are pure ontology axioms without language-specific literals, and we would not want to eliminate those. Off the top of my head, other possible approaches would be to (a) give all such non-language files a specific suffix forcing their inclusion regardless of language settings, or (b) arrange rdf files into top-level directories by language, including one top-level directory that is always loaded. |
Either of these approaches seem feasible. @gneissone , as @brianjlowe mentions, if you look in |
I also noticed the getAvailableLocales() method, and it's probably worth investigating. I think we would just have to make sure that it doesn't raise the risk of (or at least document the possibility of) unexpected behavior where a specific locale string may exist in VIVO that does not have built-in support at the server/Java VM level. |
Grappling with this issue during development, I had an "ah-ha" moment when I realized the whole problem can go away with the "available-langs.properties"... which provides 100% confidence since we know exactly which languages are available in the repo itself. |
Yeah, but the idea of adding optional functionality by having to update one central registry always makes me nervous. It's like the problem of copying web.xml because you added a custom servlet and then if you forget to merge upstream changes you lose any new servlets anyone else adds and get frustrated when the app breaks in unpredictable ways at runtime. We have things like annotations now to allow you to add new functionality while avoiding that problem. Sure, we may wish that everyone add new language support collaboratively by carefully reading all the developer documentation and submitting pull requests to the central language repositories, but sooner or later someone won't, and they'll either get frustrated that their new language files aren't showing up because they missed that crucial step or they'll end up with a local override of available-langs and the next maintenance dev who comes on the project and performs an upgrade will wonder why the newly-advertised languages aren't showing up. |
@brianjlowe : looking out for future robustness is a fair point. Renaming/Restructuring the VIVO-/Vitro-language files is reasonable... and now would be the time. I would suggest that such a change be done in a separate PR, but as a requirement before considering merging the |
@awoods Sounds like a reasonable approach. E.g., a "blocker" issue for the -i8n release? |
New ticket: https://jira.lyrasis.org/browse/VIVO-1848 |
@brianjlowe would a non-standard locale suffix even work? VIVO uses methods from the Locale library in various places that seem to rely on the suffix being valid, e.g. https://github.com/vivo-project/Vitro/blob/master/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/selection/LocaleSelectionDataGetter.java#L92. Out of the other proposals, I would strongly prefer that i18n files live in their own directory rather than giving all the other files a suffix to ensure inclusion. |
Yep, it does appear that we already depend on VIVO's locales being "available" to the JVM the application is running in. Those locale objects are set up in LocalSelectionSetup.java, which includes this curious section Vitro/api/src/main/java/edu/cornell/mannlib/vitro/webapp/i18n/selection/LocaleSelectionSetup.java Line 143 in 6d64d27
if (!"es_GO".equals(localeString) && // No complaint about bogus locale so we are indeed already testing that each locale (except for "es-GO", which we let slide) is "available" to the JVM, evidently without problems so far. I don't know if a standard set of all known world locales is shipped with every JVM, or whether this depends on the configuration of the underlying OS. The docs for getAvailableLocales() say that only Locale.US is the minimum requirement. If there's a possibility that someone might need to do additional system-level configuration to enable support for a particular locale, we should probably document it. I also agree that the directory-based layout would be much more elegant. |
Hah, es_GO was the placeholder spanish included with VIVO that was created by running everything through Google Translate. It appears somebody went to great lengths to ensure nobody mistook that as a proper translation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested and works as advertised. It's a vast improvement over the current deployment procedure. Will be looking for an incremental improvement on this method per our discussion on Vitro #160 .
* Layer uqam updates onto master (minus trailing whitespace) * Update RDFServiceFactorySingle.java * Sprint i18n whitespace (#143) * Removed extraneous whitespace - modified: api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/BaseEditElementVTwo.java * move RootUserPolicy.java from VIVO to Vitro repo. * Remove blank line * Fixed indentations * Update whitespace for: TemplateProcessingHelper.java * Update whitespace for: RDFServiceModel.java * Removed extraneous whitespaces. * Tagging UQAM Comments with following tags -Add-Feature -Optimization -Linguistic-Management -Bug-Correction * Resolve compilation failures in Vitro tests * Remove whitespace changes from SelectListGeneratorVTwo.java * Add null check on field values of RDF Form (#158) Resolves: https://jira.lyrasis.org/browse/VIVO-1800 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Fix incorrect tool-tip in language selection dropdown (#156) Resolves: https://jira.lyrasis.org/browse/VIVO-1783 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Sprint i18n/lang filtering model (#159) * Add language-aware graph filtering instead of layering on additional RDFService Resolves: https://jira.lyrasis.org/browse/VIVO-1771 * Remove hardcoded link label (#161) Resolves: https://jira.lyrasis.org/browse/VIVO-1779 * Enable filtering of non-enabled i18n language files from being loaded into triple store (#160) Define name of available language listing file (found in Vitro-languages) Update RDFFilesLoader method interfaces to include ServletContext Part of resolution to: https://jira.lyrasis.org/browse/VIVO-1836 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Add i18n version of Edit page title (#157) Related to: https://jira.lyrasis.org/browse/VIVO-1779 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Changing ontology extensions for n3 & assigning a base IRI to each (#163) ontology Co-authored-by: michelheon <heon@videotorn.ca> Co-authored-by: Andrew Woods <awoods@duraspace.org> https://jira.lyrasis.org/browse/VIVO-1862 * Update sprint-i18n with master branch (#166) * Make data property richtext editor option selectable from UI * [VIVO-1755] - Better error handling when reasoner disabled (#137) * Better error handling when reasoner disabled * Change reasoner error log message to debug * Extend reasoner status error handling * Improve reasoner error log message and extend to JenaAdminActions * Bump up log level for admin action to 'warn' and edit admin panel error message * Change Model writer lang from "N3-PP" to "N3" (#149) Resolves: https://jira.lyrasis.org/browse/VIVO-1761 Co-authored-by: Andrew Woods <awoods@duraspace.org> * [VIVO-1851] - Add 'remove' option to named graph management page (#162) * Add 'remove' option to named graph management page Resolves: https://jira.lyrasis.org/browse/VIVO-1851 * [VIVO-1872] - Add download option to SPARQL Query page (#164) * Add download option to SPARQL Query page * Set SPARQL query results content type even if downloading * Address pull request comments Co-authored-by: gneissone <mbgross@wustl.edu> Co-authored-by: Ralph O'Flinn <roflinn@users.noreply.github.com> Co-authored-by: Andrew Woods <awoods@duraspace.org> * [VIVO-1839] - Use language name for selector instead of flags (#165) * Use language name for selector instead of flags * Add country name to language selector * Increase min-width of language dropdown * Update data tree comment in languageSelector.ftl * Min-width for language dropdown * Language dropdown css adjustment * Capitalize locale label * Indent on languageSelector.ftl Resolves: https://jira.lyrasis.org/browse/VIVO-1839 * Adds internationalization to the admin/sparql-query page (#167) * Adds internationalization to the admin/sparql-query page Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1873 * Add i18n for 'save query result' Related to: https://jira.lyrasis.org/browse/VIVO-1873 * code review Co-authored-by: Andrew Woods <awoods@duraspace.org> * removed redundat files which are now available via Vitro- and VIVO-languages * Making UQAM-optimization aware of https:// * Add parent reference to installer/pom.xml (#174) Resolves: https://jira.lyrasis.org/browse/VIVO-1903 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Revert non-function RDF changes (#177) Related to: https://jira.lyrasis.org/browse/VIVO-1905 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Ensure 'other' in Individual->Teaching->advisees->type is translated Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1881 * Re-add logic from commit 7420957 * [VIVO-1812] use i18n translation for validation messages (#179) * replace constants with i18n text in BasicValidationVTwo * use constants for i18n template key Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1812 * added js_string at i18n strings to handle quotes properly, ticket vivo-1842 (#180) Partial resolution for: https://jira.lyrasis.org/browse/VIVO-1842 * [VIVO-1870] simplify and concat translation for browse by vclass (#182) * simplify and concat translation for browse by vclass Partial resolution of: https://jira.lyrasis.org/browse/VIVO-1870 * [VIVO-1900] i18n: added empty check for getCountry, fixing bug with spanish label (es) (#181) * added empty check for getCountry, fixing bug with spanish label (es), ticket vivo-1900 Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1900 * [VIVO 1870] update i18n key to JavaScript mapping (#183) * update menupage-script i18n key to JavaScript mapping Follow-on to resolution of: https://jira.lyrasis.org/browse/VIVO-1870 * [VIVO-1837] get i18n bundle from WebappDaoFactoryConfig preferred locales (#178) * apply i18n text to VClassDaoJena.getLabelForClass * expose i18n bundle through webapp dao factory interface * use whole messages for i18n * if request available use request bundle else use context bundle * clear cache when context theme directory changes * make getOverridingLocale from context private * select locale based on preferred locale from webapp dao factory * use first preferred local even when no selectable locales available on context * build default preferred locales from default preferred languages Resolves: https://jira.lyrasis.org/browse/VIVO-1837 * Ensure that "available langs" include base langs (#185) Resolves: https://jira.lyrasis.org/browse/VIVO-1922 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Ensure I18nStub is initialized before pertinent tests (#186) Resolves: https://jira.lyrasis.org/browse/VIVO-1923 Co-authored-by: Andrew Woods <awoods@duraspace.org> * add additional null checks to ensure context is ready for theme change (#187) * [VIVO-1915] i18n - Adding a label with language tag through the "new" manageLabelsForindividualAddForm.ftl does not take the setting for language tag (#184) * Fixed bug when addng a label with language tag through managLabelsForindividualAddForm, re ticket VIVO-1915 * removed the language select for managing multi language labels, ticket vivo-1915 * readded the fix for language selection because of the fr-CA version of the manageLabelsForIndividualftl, ticket vivo-1915 * removed earlier fix, removed comments, modified ManageLabelGenrator, ticket vivo-1915 Partial resolution to: https://jira.lyrasis.org/browse/VIVO-1915 * - replaced hard coded "or"s with i18n().or * [VIVO-1925] i18n: Editing labels results in new label (#188) * fixed bug: Editing language labels results in new label, ticket vivo-1925 Resolves: https://jira.lyrasis.org/browse/VIVO-1925 * Enable lang selection without need for 'available-langs.properties' (#169) * Enable lang selection without need for 'available-langs.properties' Co-authored-by: Andrew Woods <awoods@duraspace.org> * Reduce number of times QuerySolutions are looped in LanguageFilteringRDFService (#194) - No functional change in this update Resolves: https://jira.lyrasis.org/browse/VIVO-1931 Co-authored-by: Andrew Woods <awoods@duraspace.org> * Prevent 'ProcessRdfForm.parseN3ToRDF' from using null linguisticContext (#197) Resolves: https://jira.lyrasis.org/browse/VIVO-1944 Co-authored-by: Andrew Woods <awoods@duraspace.org> * [Vivo 1918] i18n: Reload firsttime files on start-up if changed (#195) Co-authored-by: Andrew Woods <awoods@lyrasis.org> * [VIVO-1936] i18n: updated the language comment in runtime.properties * ftl function to capitalize group name affording override * Further i18n for BasicValidationVTwo.java * Fixed DeletePropertyController.java - getting localname of property properly (#200) * Fixed DeletePropertyController.java - getting localname of property properly Resolves: https://jira.lyrasis.org/browse/VIVO-1816 * Removed hardcoded time units by properties calls in dateTimeWithPrecision.ftl * Use i18n values for date time form (#204) Resolves: https://jira.lyrasis.org/browse/VIVO-1953 * VIVO-1929: patch authorizing create individual form (#206) * patch authorizing create individual form Resolves: https://jira.lyrasis.org/browse/VIVO-1929 * Issue/vivo 1947 (#205) * Make data property richtext editor option selectable from UI * Better error handling when reasoner disabled * Change reasoner error log message to debug * Extend reasoner status error handling * Improve reasoner error log message and extend to JenaAdminActions * Bump up log level for admin action to 'warn' and edit admin panel error message * Change Model writer lang from "N3-PP" to "N3" (#149) * Prevent ontology editor and N3 editing from deleting property values in languages other than the one associated with the editing request. [https://jira.lyrasis.org/browse/VIVO-1947] Resolves: https://jira.lyrasis.org/browse/VIVO-1947 Co-authored-by: gneissone <mbgross@wustl.edu> Co-authored-by: Ralph O'Flinn <roflinn@users.noreply.github.com> Co-authored-by: Andrew Woods <awoods@lyrasis.org> Co-authored-by: Andrew Woods <awoods@duraspace.org> * Remove comments Co-authored-by: Andrew Woods <awoods@duraspace.org> Co-authored-by: Nicolas D <46490666+nicalico@users.noreply.github.com> Co-authored-by: VIVO UQAM <62542918+UQAM-VIVO@users.noreply.github.com> Co-authored-by: Matthias Luehr <luehr@hs-mittweida.de> Co-authored-by: michelheonuqam <heon.michel@uqam.ca> Co-authored-by: Brian Lowe <brianjlowe@gmail.com> Co-authored-by: j-dornbusch <joachim.dornbusch@ehess.fr> Co-authored-by: Michel Heon <heon@videotron.ca> Co-authored-by: gneissone <mbgross@wustl.edu> Co-authored-by: Ralph O'Flinn <roflinn@users.noreply.github.com> Co-authored-by: dofeldsc <dofeldsc@uos.de> Co-authored-by: root <root@vivo-development.hs-mittweida.de> Co-authored-by: gneissone <mbgross@unavco.org> Co-authored-by: William Welling <wwelling@library.tamu.edu> Co-authored-by: Kampe <Benjamin.Kampe@tib.eu> Co-authored-by: Gross, Benjamin <benjamin.gross@clarivate.com> Co-authored-by: matthiasluehr <60263380+matthiasluehr@users.noreply.github.com> Co-authored-by: nicolasdickner <dickner.nicolas@uqam.ca>
… into triple store
Define name of available language listing file (found in Vitro-languages)
Update RDFFilesLoader method interfaces to include ServletContext
Part of resolution to: https://jira.lyrasis.org/browse/VIVO-1836
What does this pull request do?
This pull-request, in combination with the three other pull-requests noted below, does the following:
Related pull-requests
How should this be tested?
To test the set of pull-requests,
info
messages detailing which RDF files are loaded and ignoredInterested parties
@VIVO-project/vivo-committers , @MichelHeon