Naming of Layout for Multi-language problem

Permalink
I've posted the bug report here
http://www.concrete5.org/developers/bugs/5-4-1-1/andquotlayoutandqu...

But I would like to leave a note here to discuss further.


It's about the naming of "Layout" at line line 53 in /concrete/models/layout.php

public function getLayoutNameTxt(){ return t('Layout'); }



The problem is that we use multi-bytes characters. And getLayoutNameTxt() will be used as the part of CSS class name.

And using multi-bytes name is not recommended for CSS class name. So we've decided to remove the t('') at 5.4.1.1

However, I received the report from a Japanese user that he lost all layout.

It's because it now tries to locate "Layout" instead "レイアウト" (layout in Japanese).

It's simple to write a SQL to cover for us… but this may lead to the serious problem to multi-site builders.

If you switch the language, you may lose the areas. (Or you could take the advantage of it though).

Anyway… I would suggest to remove t('') from getLayoutNameTxt(). And write a conversion SQL for the next upgrade.

Japanese users pretty much decided to do so. But I would ilk to discuss it here as well..




Also, at 5.4.1.1, the core changed getAttributeKeyName() to getAttributeKeyDisplayHandle() throughout the dashboard of attributes of users.

This is problem for Japanese users. We had to switch it back to getAttributeKeyName() and we will have to keep using getAttributeKeyName().

katz515
 
katz515 replied on at Permalink Reply
katz515
We are going to release

concrete5.4.1.1.1.ja

And this is the upgrade script

/concrete/helpers/concrete/upgrade/version_54111.php

<?php 
/**
 * @access private
 * @package Helpers
 * @category Concrete
 * @author Tao Sasaki <tao@xross-cube.com>
 * @copyright  Copyright (c) 2003-2011 Concrete5. (http://www.concrete5.org)
 * @license   http://www.concrete5.org/license/...     MIT License
 */
defined('C5_EXECUTE') or die("Access Denied.");
class ConcreteUpgradeVersion54111Helper {
   public function run() {
      $db = Loader::db();
      // Changing the layout without t()
        $db->Execute("UPDATE Areas SET arHandle = replace(arHandle,'".t('Layout')."','Layout') WHERE arHandle LIKE '%: ".t('Layout')."%'");