Posted by spline on December 5, 2008 at 6:18pm
Fick nedanstående felmeddelande på förstasidan efter att ha installerat Drupal 6.6 med svensk översättning sv-6.x-1.1.
Någon som kan förklara varför det uppkom och om det är något som kan behöva åtgärdas?
Den valda filen /tmp/file2aKQGy kunde inte laddas upp på grund av att destinationen languages/sv_be9b0b0ef910c014c2b5e147bf92968f.js inte är korrekt konfigurerad.
I min installation finns inte någon mapp "languages" under Drupal-roten kan tilläggas.
Språkfilerna var ordnade som undermappar med namnet "translations" till respektive moduler, profiler eller teman.
Comments
Skapade mappen
Skapade mappen "drupalroot/languages" och gjorde skrivbar för webbservern (777/rwxrwxrwx).
Felmeddelandet försvann då och en js-fil skapas i mappen med nedanstående innehåll.
Vad är dess funktion och varför ingick inte denna mapp i installationen?
Drupal.locale = { 'pluralFormula': function($n) { return Number(($n!=1)); }, 'strings': { "Unspecified error": "Ospecificerat fel", "Your server has been successfully tested to support this feature.": "Din server har testats och har stöd för denna funktion.", "Testing clean URLs...": "Testar rena URL:er...", "Your system configuration does not currently support this feature. The \x3ca href=\"http://drupal.org/node/15365\"\x3ehandbook page on Clean URLs\x3c/a\x3e has additional troubleshooting information.": "Dina systeminställningar stöder för närvarande inte denna funktion. På \x3ca href=\"http://drupal.org/node/15365\"\x3ehandbokssidan om rena URL:er\x3c/a\x3e finns mer information om fellösning.", "An error occurred. \n@uri\n@text": "Ett fel inträffade. \n@uri\n@text", "An error occurred. \n@uri\n(no information available).": "Ett fel inträffade. \n@uri\n(ingen information tillgänglig).", "An HTTP error @status occurred. \n@uri": "Ett HTTP-fel inträffade: @status. \n@uri", "Drag to re-order": "Drag för att ordna om", "Changes made in this table will not be saved until the form is submitted.": "Ändringar som görs i denna tabell sparas inte förrän formuläret skickas.", "Select all rows in this table": "Markera alla rader i tabellen", "Deselect all rows in this table": "Avmarkera alla rader i tabellen", "Split summary at cursor": "Avdela sammanfattning vid markören", "Join summary": "Lägg ihop sammanfattning", "The changes to these blocks will not be saved until the \x3cem\x3eSave blocks\x3c/em\x3e button is clicked.": "Ändringarna i dessa block kommer inte att sparas tills \x3cem\x3eSpara block\x3c/em\x3e knappen klickats." } };Hittade två andra inlägg
Hittade två andra inlägg om detta
Swedish translation, June 14, 2008, Konstiga felmeddelanden...
http://drupal.org/node/270420
Translations, August 30, 2008, file create error after switching to translated language
http://drupal.org/node/302048
Tydligen ska en skrivbar mapp med namnet "languages" för genererade javascript-filer finnas någonstans i mappstrukturen, och ev. skapas under installationen.
Vad jag undrar lite är varför inte alla råkar ut för detta.
Kan det vara ett server-specifikt problem eller har det att göra med den aktuella versionen av Drupal (6.6) och översättning (sv-6.x-1.1)?
Filrättigheter
Oftast beror det här problemet på att files-katalogen inte är skrivbar, vilket gör att Drupal inte kan skapa languages-katalogen. Kolla Administrera > Inställningar > Filsystem (tror jag det heter).
/ Hannes Lilljequist – SthlmConnection
Det är tänkbart att det
Det är tänkbart att det var felet från början, men jag vill minnas att det togs upp under installationen att sätta filrättigheter för files.
Problemet i nuläget är i iaf. att javascript-filen skapas i katalogen "/languages" i sajtroten medan den länkas från sidorna till en annan katalog där den inte finns "/sites/default/files/languages".
Frågan är då varför sökvägen för lagring skiljer sig från den för läsning?
I databasen i tabellen "languages" finns i min version en rad för "sv" där kolumnen "javascript" har ett hash-liknande värde som motsvarar en del av filnamnet för javascript-filen (xxx i sv_xxx.js), men sökvägen finns inte med där.
Någon som varit inne i koden kanske vet var sökvägen hämtas när translation-funktionen lagrar denna javascript-fil?
Flytta filerna
Du kan med all säkerhet flytta det som ligger i languages i sajtroten till motsvarande plats i sites/default/files/languages. Jag är osäker på varför det la sig i sajtroten från början, så ska det inte vara.
Alla delar av Drupal letar upp sökvägar på liknande sätt, och i det här fallet sker det förmodligen som i liknande fall med file_create_path().
/ Hannes Lilljequist – SthlmConnection
Grävt lite i koden för att
Grävt lite i koden för att se var sökvägarna hämtas
// $Id: locale.module,v 1.212.2.5 2008/10/20 09:31:06 goba Exp $
locale_update_js_files()
$dir = file_create_path(variable_get('locale_js_directory', 'languages'));
if (locale_inc_callback('locale_rebuild_js')) {
drupal_add_js($dir .'/'. $language->language .''. $language->javascript .'.js', 'core');
// $Id: locale.inc,v 1.174.2.4 2008/09/17 08:47:04 goba Exp $
locale_rebuild_js()
// Construct the filepath where JS translation files are stored.
// There is (on purpose) no front end to edit that variable.
$dir = file_create_path(variable_get('locale_js_directory', 'languages'));
// Ensure that the directory exists and is writable, if possible.
file_check_directory($dir, TRUE);
// Save the file.
$dest = $dir .'/'. $language->language .''. $data_hash .'.js';
if (file_save_data($data, $dest)) {
Posterna 'locale_js_directory' och 'file_directory_path' finns inte i min 'variable'-tabell, så jag antar att defaultvärden i koden används, men varför det skulle resultera i att filen sparas på ett annat ställe vet jag inte.
Det är ju möjligt att det har att göra med min serverkonfiguration på något sätt.
Tack för tipset, jag får
Tack för tipset, jag får göra på det sättet att jag flyttar filen manuellt tills vidare.
Jag vet inte riktigt under vilka omständigheter den uppdateras, men det kanske inte är så ofta.
Eller så kanske jag kan lägga in en sökväg i databasen för 'locale_js_directory' och se om det funkar.
Variablerna sätts när du
Variablerna sätts när du ändrar inställningarna under exempelvis Administrera >> Inställningar >> Filsystem. Det är säkrare att använda gränssnittet än att ändra i databasen på många sätt. Om du ändå gör det, tänk på att locale_js_directory inte ska vara en absolut sökväg, utan en sökväg relativt till file_directory_path. Det finns inget skäl att ha något annat än "languages".
/ Hannes Lilljequist – SthlmConnection