Skip to content
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

Automatizar o emprego da etiqueta [en] no título de links em inglês #161

Open
rghedin opened this issue Jan 30, 2025 · 6 comments
Open

Comments

@rghedin
Copy link
Collaborator

rghedin commented Jan 30, 2025

Hoje, quando um leitor publica um link em inglês sem inserir na mão o [en], tenho que editar o post e alterar o título. O que não é muito trabalho, considerando o volume de postagens no Órbita.

Pensei, porém, em uma possível solução para automatizar isso: detectar o idioma informado pela própria página e imprimir o [en] no título. (Dá para estender ao [es] também; outros idiomas eu não lembro de ter visto, mas a depender da solução, poderíamos usar algum padrão para estender a funcionalidade a todos os idiomas.)

A maioria das páginas HTML, ou as que seguem as melhores práticas, informam o idioma no início:

<html lang="en">

A ideia é detectar esse atributo da tag html.

Acham viável?

@valdessondev
Copy link

valdessondev commented Jan 30, 2025 via email

@valdessondev
Copy link

valdessondev commented Jan 30, 2025

Talvez isso ajude... para ter como referência (usei llm da DeepSeek v3 no site) para dar uma acelerada:

<?php
require_once 'simple_html_dom.php';

$urls = [
    'https://example.com',
    'https://www.w3schools.com/',
    'https://www.php.net/',
    'https://example.es',
    'https://example.pt',
    'https://example.com.br'
];

$results = [];

foreach ($urls as $url) {
    $entry = [
        'url' => $url,
        'lang_page' => null
    ];

    $html = @file_get_html($url);

    if ($html) {
        $htmlTag = $html->find('html', 0);
        
        if ($htmlTag && $htmlTag->lang) {
            $lang = strtolower(trim($htmlTag->lang));
            
            // Verifica as combinações de idioma
            if (strpos($lang, 'pt-br') === 0) {
                $entry['lang_page'] = 'pt-BR';
            } else {
                $primaryLang = explode('-', $lang)[0];
                
                switch ($primaryLang) {
                    case 'en':
                    case 'es':
                    case 'pt':
                        $entry['lang_page'] = $primaryLang;
                        break;
                }
            }
        }
        
        $html->clear();
    }

    array_push($results, $entry);
}

header('Content-Type: application/json');
echo json_encode($results, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
?>

PS: sou programador web para php então garanti que funciona, e inclusive uso em meus projetos a lib

@claromes
Copy link
Member

Simple HTML DOM pode consumir muita memória.

Talvez, apenas perguntar ao usuário inserindo uma opção no formulário.

  • Verifica se é um link.
  • Mostra a pergunta "Qual é o idioma do conteúdo no link?"
  • Um select com português (sem indicação no título), inglês [en], espanhol [es], etc.

@valdessondev
Copy link

Nesse caso poderia colocar em prática para realização de teste para ver como performa? A maioria dos sites em HTML não ultrapassam 2mb de conteúdo quando é requisitado e poderia ter um cache para que o segundo usuário, com um JSON do link onde salvaria a informação do idioma. Eu ainda consideraria verificar quando o link for adicionado disparando o evento para chamar o script de verificação para poder preencher o campo relacionado do idioma.

Um select com português (sem indicação no título), inglês [en], espanhol [es], etc.
Também é uma solução.

Qualquer coisa estamos aqui!

@rghedin
Copy link
Collaborator Author

rghedin commented Jan 31, 2025

Obrigado, @valdessondev e @claromes! Acho que gosto mais da solução com select. As páginas do Manual/Órbita são muito leves, por isso qualquer incremento pode tornar-se perceptível. (A título ilustrativo, a do formulário de postagem do Órbita transfere 120 KB e tem no total 277 KB.)

@valdessondev
Copy link

Show de bola! Estou ansioso pela implementação!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants